• ベストアンサー

EXELの関数を使った検索方法

A1にあるセルのデータと同じものを、列Bの中から探し出す。 ↓ 列Bのn行目で検索がヒットすれば列Cのn行のデータ(要するに横の値)を列Dの上から順に書き込んでいく。 ↓ これをA1~Axまで繰り返したいのですが、何か良い方法ございませんか?できれば関数を使って一気に終わらせたいです。 わかりにくければ補足します。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

A1に検索値,B列に対照値,C列に表示値でいいのですよね。 D1=VLOOKUP(A1,$B$1$C$1000,2,FALSE) として下方向にコピー(1000は便宜的なものですAxの行数に置き換えてください) ただしAの値がBに存在しない場合は#N/Aが表示されます。 回避する場合はIF文で =IF(ISNA(VLOOKUP(A1,$B$1$C$1000,2,FALSE)),"",VLOOKUP(A1,$B$1$C$1000,2,FALSE)) のようにしてください。

_comcom
質問者

お礼

返信おくれてすいません。 ありがとうございます。 おっしゃるようにVLOOKUP関数を使えばできました。

その他の回答 (4)

  • beer55
  • ベストアンサー率33% (7/21)
回答No.5

おばんです。beer55です。 ご質問の意味をよく理解しておりませんが、例えばA1のデータB列から検索し、B列の横にあるC列の値をD1に表示させる方法として D1=INDEX(C$1:C$10,MATCH(A1,B$1:B$10,0)) では、ダメですか。

_comcom
質問者

お礼

返信おくれてすいません。 ありがとうございます。 index関数は今までなぞでしたがようやく使い方がわかりました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

問題の意味が2通りに取れると思います。 >A1にあるセルのデータと同じものを、列Bの中から探し出す B列にA1のデータと同じものが複数あり、その行を抜き出して、指定列のデータを、上行セルから1列に並べる と取ると (データ)A1:C10にデータがあるとします。 D、E列は答えを出してますが、初めは無いものと見てください。 (A) (B) (C)  (D)  (E) a a X1 1 X1 s X2 1 X3 a X3 2 X8 f X4 2 g X5 2 h X6 2 g X7 2 a X8 3 s X9 3 d X10 3 C列C1に=COUNTIF($B$1:B1,$A$1)といれ、下に複写します。上記D列のようになります。 E列E1に=OFFSET($C$1,MATCH(ROW(F1),$D$1:$D$10,0)-1,0)といれ下にAの個数(c列最下行の数字分)だけ複写します。 結果はE列のようになります。 D列が邪魔ですが、この解き方では必要ですので出しています。 問題の意味の取り違えの場合はご免。

_comcom
質問者

お礼

返信おくれてすいません。 ありがとうございます。 offset関数とは初めてしりました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 >列Dの上から順に書き込んでいく。 これを重視すると、 D1に、 =IF(SUM(SIGN(COUNTIF(B:B,$A$1:$A$x)))>=ROW(D1),VLOOKUP(INDEX(A:A,SMALL(IF(COUNTIF(B:B,$A$1:$A$x),ROW($A$1:$A$x)),ROW(D1))),B:C,2,FALSE),"") と入力して、[Ctrl]+[Shift]+[Enter]で確定します。 (数式の両端に「{}」が付いて、配列数式になります。) これをDx行までコピーします。

_comcom
質問者

お礼

返信おくれてすいません。 ありがとうございます。 複雑な数式ですが非常に参考になりました。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.2

#1の方法が一般的です。 あえて、こういうやり方もあります。 (xとnは適宜変更してください。) D列の入力したいセルを全部選択して、 =IF(ISNA(VLOOKUP(A1:Ax,B1:Cn,2,FALSE)),"",VLOOKUP(A1:Ax,B1:Cn,2,FALSE)) と入力し、"Ctrl"+"Shift"+"Enter"で入力します。 配列数式でも出来ました。

_comcom
質問者

お礼

返信おくれてすいません。 ありがとうございます。 非常に参考になりました。

関連するQ&A

専門家に質問してみよう