• ベストアンサー

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

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

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答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/17068)
回答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

  • EXEL2000 複数条件で集計を求める関数式

    検索範囲のA列における検索条件が[A5001]セルと同じ値、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計は =SUMPRODUCT((A1:A5000=A5001)*(B1:B5000=B5001)*C1:C5001) では、検索範囲A列が検索条件が[A5001]セルと同じ値の文字列を含むもの、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計をする場合に (たとえば、リストの A列データの値は、青森リンゴ、長野リンゴ、和歌山ミカン等、 B列データの値は、大、中、小等、 C列データの値は、その売上高、 検索条件[A5001]セルの値が[リンゴ]、 [検索条件B5001]セルの値が[大]である場合に、 リンゴという文字列が含まれており且つ大であるものの売上合計金額を求める) =SUMPRODUCT((A1:A5000="*"&A5001&"*")*(B1:B5000=B5001)*C1:C5001) を試しましたがだめでした。 これとは別に、 =SUMPRODUCT(COUNTIF(A1:A5000,"*"&A5001&"*")/COUNTIF(A1:A5000,"*"&A5001&"*"))*(B1:B5000=B5001)*C1:C5001) も試しましたがだめでした(数日前にこちらで教えていただきまして、行数が10行程度の仮のリストで試しましたらうまくいきましたが、実際のリスト(5000行以上)では#VALUE!が返ります。リストは「値のみ貼付」で得られたデータのみが入っています) このリストで、5001行以降に検索条件が多数並んでいます。 EXEL2000で可能な関数式を教えて下さい。よろしくお願いします。

  • エクセル(excel)の計算式(関数)について

    エクセル(excel)の計算式(関数)でよいアイディアがありましたら教えてください。 1行目は項目行です。 セルA1から右に15列=セルO1まで、 a | b | c | d | e | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 と入っています。 2行目からデータとして、 セルA2から右に5列=セルE2まで、 4 | 2 | 2 | 1 | 1 と入力したとします。(データ例(1)) あるいは、 セルA3から右にセルE3まで、 6 | 3 | 0 | 0 | 0 と入力したとします。(データ例(2)) 1つのデータの5個の数字のルールは2つで、 「合計で10以下である。」 「左から順に小さくなるか、同じ数字となる。」 です。 (目的は、) このとき、F列からO列にかけて、 データ例(1)のケースでは、 a | a | a | a | b | b | c | c | d | e データ例(2)のケースでは、 a | a | a | a | a | a | b | b | b | と表示されるように、 つまり、項目行の下にある数だけ、その列の1行目の記号を 1(F列)から右に向かって順に埋めていくような、 F列からO列までの2行目以下に入れる適当な計算式(関数)は ないでしょうか。 拙い説明で申し訳ありません。どなたかよい考えをお持ちの方がいらっしゃいましたらと存じます。 どうぞよろしくお願い致します。

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • このようなエクセルの関数の組み合わせはありますか

    エクセルの関数についての質問です。 たとえば、A列とB列にタテに10個ずつのデータ(A1:B10)があって、 (1)A列とB列の同じ行のデータの小さいほうを選んだあと、 (2)選んだ10個のデータを合計したい のですが、そのような関数の組み合わせを作る(一つのセルに一気に表示する)としたら、どのようなものになるのでしょうか。MIN関数と、SUM関数を組み合わせればいいような気がするのですが、うまくいきません。 ご存知の方ならすぐにわかるようなことでしょうが、どうもわかりません。どなたか教えていただけないでしょうか。

  • Excel表検索の手立てについて

    Excel2010で、以下のような表があります    A    B   C   D 1  90  80  70  60 2  85  75  65  55 3  80  70  60  50 ここで、セルA5に「行=2」という「位置の変数」と セルA6に「点=70」という「得点の変数」が与えられています。 この値から、「列=B」(得点の直上の値)という結果(列=2という結果でも可) を得たいのですが、うまいこと関数で何とかならないでしょうか? なにせ、上記は例でしかなく、実際の表は縦30×横26なのでIFを並べるわけにも いかないんです。 行が固定ならMATCH関数で簡単にできるんですが・・・。

  • Excelの関数を教えてください。

    Excelの関数で例えば シートAのB行の中の値とシートBのセルA1の値、シートAのC行の中の値とシートBのセルB1の値が一致した行のF列の値を返す関数を考えているのですが、いろいろ試してもエラーになってしまいます。(B列とC列の一致する行は1つしかありません) これができないと家に帰れません;; どなたか、教えてください! よろしくお願いします。

  • vlookup関数で検索値を含む文字列を検索する方法

    vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。  よろしくお願いします。

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • EXCEL関数で教えてください。

    B列に3行おきに名称があります。 C列にその名称ごと(3行ごと)のロット数 D列にその名称ごと(3行ごと)の値A E列にその名称ごと(3行ごと)の値B が入力されています。 そのデータを名称ごとに1行にまとめる場合の関数を教えてください。

  • Excel 任意の数値を上から順に参照、表示する方法

    図1   A B    C D 1   3    1 3 2 1 4 ⇒ 2 5 3   5 4 2 (1) 図1の様に、A列の任意のセルに入力された値を上から順に選択して、C列の1行目から表示させる方法 (2) 上記同様B列の任意のセルに入力された値を上から順に選択して、D列の1行目から表示させる方法、但しB列の左側に値が有る場合(図1の場合はB2セル)は次の値から参照する 以上2点の回答(C、D列に入力するべき関数)をお願いします。 ※A列及びB列には値が入らない(空白)場合もあります ※今回、関数のみでの回答を希望しております(マクロ不可) ※実際の表では選択と表示させるシートは分かれています 返答が一時遅れる場合も有りますがご了承下さい。

専門家に質問してみよう