#N/Aの表示、非表示について
excel2010
あるwebサイトにvlookup関数の高速化という内容が掲示されていたので、
それを使用してみました。
そこで、ちょっとおかしな状況になっているので、
それに関する質問です。
構成
SHEET5に下記の様なデータがあります。
A列にALLコード、B列にデータです
ALLコード データ
0109S10100100B60 722
0110H10100110B32 18
0110S10100020B62 0
0110S10100040B62 77
0110S10100050B62 19
0110S10100070B62 35
0110S10100090B62 16
0110S10100100B60 200
0111H10100110B32 41
0111S10100030B62 68
0111S10100040B62 70
0111S10100050B62 32
0111S10100070B62 60
0111S10100080B62 17
0111S10100090B62 25
0111S10100100B60 100
0112H10100110B32 14
0112H20100020B41 11
0112H20100030B42 89
0112H20100040B43 23
0112H20100050B42 27
0112H20100070B44 5
0112H20100080B40 17
0112S10100010B62 11
0112S10100020B62 12
0112S10100030B62 69
上記ALLコードの先頭4桁はシリアル番号になっており、
実際のコードは、それ以降の12桁なので、異なるシートにVLOOKUP関数で下記の様に
マトリクス表にしました。
A列:コード
B列:0109
C列:0110
D列:0111
でB2セルに
=IF(INDEX(Sheet5!$A$2:$A$1000004,MATCH(CONCATENATE(B$1,$A2),Sheet5!$A$2:$A$1000004,1),1)=CONCATENATE(B$1,$A2),VLOOKUP(CONCATENATE(B$1,$A2),Sheet5!$A$2:$B$1000004,2,TRUE),NA())
という式を入れて、対象範囲B2:D15までコピーしています。
コード 0109 0110 0111
S10100081B62 #N/A #N/A #N/A
S10100091B62 #N/A #N/A #N/A
S10100110B69 #N/A #N/A #N/A
S10100100B60 722 200 100
S10100120B60 #N/A #N/A #N/A
S10100010B62 #N/A #N/A #N/A
S10100020B62 #N/A 0 #N/A
S10100030B62 #N/A #N/A 68
S10100040B62 #N/A 77 70
S10100050B62 #N/A 19 32
S10100060B62 #N/A #N/A #N/A
S10100070B62 #N/A 35 60
S10100080B62 #N/A #N/A 17
S10100090B62 #N/A 16 25
N/Aがあると見づらいので、
式のNA()を削除し、
B2セル
=IF(INDEX(Sheet5!$A$2:$A$1000004,MATCH(CONCATENATE(B$1,$A2),Sheet5!$A$2:$A$1000004,1),1)=CONCATENATE(B$1,$A2),VLOOKUP(CONCATENATE(B$1,$A2),Sheet5!$A$2:$B$1000004,2,TRUE),)
で対象範囲コピーしたところ、下記の様な結果になりました。
コード 0109 0110 0111
S10100081B62 #N/A 0 0
S10100091B62 #N/A 0 0
S10100110B69 0 0 0
S10100100B60 722 200 100
S10100120B60 0 0 0
S10100010B62 #N/A 0 0
S10100020B62 #N/A 0 0
S10100030B62 #N/A 0 68
S10100040B62 #N/A 77 70
S10100050B62 #N/A 19 32
S10100060B62 #N/A 0 0
S10100070B62 #N/A 35 60
S10100080B62 #N/A 0 17
S10100090B62 #N/A 16 25
0110と0111は正しく表示しているのですが、0109列は#N/Aが残っています。
コピーペーストを間違ったわけではありませんが、
何故0109だけ#N/A表示が残っているのか、想定される原因を教えていただきたく。
ちなみにALLコード先頭に
0108S10100100B60 888
を追加して1列増やすと、
コード 0108 0109 0110 0111
S10100081B62 #N/A 0 0 0
S10100091B62 #N/A 0 0 0
S10100110B69 0 0 0 0
S10100100B60 888 722 200 100
S10100120B60 0 0 0 0
S10100010B62 #N/A 0 0 0
S10100020B62 #N/A 0 0 0
S10100030B62 #N/A 0 0 68
S10100040B62 #N/A 0 77 70
S10100050B62 #N/A 0 19 32
S10100060B62 #N/A 0 0 0
S10100070B62 #N/A 0 35 60
S10100080B62 #N/A 0 0 17
S10100090B62 #N/A 0 16 25
の様になり、0109の#N/A表示は解消されました。
EXCELの仕様なのでしょうか?
とりあえず、ダミー列のデータ挿入で非表示にすれば、
見た目上は、すっきりですが、何か異なる方法があれば教えていただきたく。
※実際は、もっと行・列共に数が多いのですが、抜粋で例をあげています。
お礼
ありがとうございました。早速実行してみます