Excelのデータ検索方法について教えてください

このQ&Aのポイント
  • Excelのデータ検索方法について教えてください。c1に特定のキーを入力すると、一致するキーの中で最新の日付を表示する方法を知りたいです。
  • どのような数式を使えば、特定のキーに対応する一番新しい日付を抽出できますか?例えば、c1に「key1」と入力すると、d1には「2011/3/2」と表示されるようにしたいです。
  • 現在、d1に「=INDEX(B:B,MAX(INDEX((A:A=D1)*ROW(B:B),0)),0)」という数式を入力していますが、最後のb列データになってしまいます。他に効果的な方法はありますか?
回答を見る
  • ベストアンサー

Excelのデータ検索方法について教えてください。

Excelで以下の様な表を作成しています。 a列 b列 ---- --------- key1 2011/3/2 key2 2011/2/4 key3 2011/4/3 key2 2011/5/3 key2 2011/2/24 key3 2011/3/10 key1 2011/1/1 c1にkey1と入れると、d1にa列がkey1でb列の一番新しい日付を表示したいのです。 例えば、 c1にkey1を入力すると、d1には2011/3/2と表示される c1にkey2を入力すると、d1には2011/5/3と表示される 様にしたいのですが、どの様な数式を書けば良いかご伝授いただけないでしょうか? 因みにd1に「=INDEX(B:B,MAX(INDEX((A:A=D1)*ROW(B:B),0)),0)」と入力してみましたが c1に入力した「最後の」b列データになってしまいました。 皆さんのお知恵を拝借させて頂きたく、よろしくお願い致します。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO2です。 A列のキーが存在しないと0になるので少し変更してみました。 =IF(COUNTIF(A:A,C1),MAX(INDEX((A:A=C1)*B:B,)),"")

siragami2
質問者

お礼

回答ありがとうございました。式の意味を考えると「なるほど」分かりやすいです。 助かりました。

その他の回答 (3)

noname#204879
noname#204879
回答No.4

D1: =SUMPRODUCT(MAX((A1:A100=C1)*(B1:B100)))

siragami2
質問者

お礼

回答ありがとうございました。 SUMPRODUCTで複数の検索結果を扱えばよいのですね。 大変助かりました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 D1に=IF(C1<>"",MAX(INDEX((A:A=C1)*B:B,)),"")

siragami2
質問者

お礼

回答ありがとうございました。 キーが存在しない場合の配慮も必要ですね。 大変助かりました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

=MAX(INDEX(B:B*(A:A=D1),0)) でいいです。 ただし,Excel2007以降を利用していることが前提です。 あぁ,あとご質問の状況説明が間違っていますが,key1などを「D1に」,数式はE1などに書きます。

siragami2
質問者

お礼

回答ならびにご指摘頂きましてありがとうございました。 大変助かりました。

関連するQ&A

  • エクセル2010 検索と抽出

    エクセル2010を 使っています。 以前教えていただいた、数式を改変して応用したいのですが、うまくいきません。 やりたいのは画像の処理で、 B83の値を E列から探しその関連セルであるF列、G列の値を、C列D列に抜き出すという作業です。 改変した数式は以下の様なもので、C83に入力後、オートフィルで使おうと思っていました。 詳しい方、教えていただけませんか? =IFERROR(INDEX(F83:F162,SMALL(IF(E83:E162=B83,ROW(E83:E162)),ROW(A1))),"") (配列数式) 3キー打鍵 よろしくお願い致します。

  • エクセル 複数条件で検索する数式を教えてください。

    社員の作業時間入力シートが2つあり、それぞれに入力しているため、入力ミスによる誤差が生じます。それをチェックしています。 検索条件が複数になる場合の計算式を教えてください。 [sheet1]   A   B   C   D  E 1 社員CD 日付  作業時間1 作業時間2  誤差 2 1000 2008/1/1   3.5  ここに数式   =C2-D2 3 1000 2008/1/2  2.5    数式    =C3-D3 4 1001 2008/1/1   5.0    数式    =C4-D4 [sheet2]   A   B   C    1 社員CD 日付  作業時間2 2 1000 2008/1/1  3.0 3 1000 2008/1/3   1.5 4 1001 2008/1/1  5.5 sheet1のD列にsheet2のC列を表示させたいのですが、 条件はA列とB列が一致するものになります。 A・B列が文字列ではないため、1列挿入して=A2&B2列を作成することができませんでした。 D列に数式をいれる事で一発で表示させる方法を教えてください。

  • 検索について教えてください。

    入出庫をエクセルにてやっているのですが、 日付等、まちまちで入荷されるのでその分け方を教えてください。 セルAの1に日付、Bの1に入荷数、Cの1にロットナンバー、Dの1に在庫数。 セルEの1に日付、Fの1に出荷数、Gの1にロットナンバー、Hの1に在庫数。 を入力しているのですが、ロットナンバーが色々ありまして 同じ商品でも、ロットナンバーが違うと出荷順序が異なります。 そこで、ロットナンバーを打ち込むとその商品の 入出荷日+在庫数が分かる方法を教えてください。 と、前回質問させていただき下記のようなマクロを教えていただきました。 J1の式 =IF(MAX(INDEX(($C$1:$C$1000=$I1)*ROW($C$1:$C$1000),))=0,"該当なし",INDEX($A$1:$A$1000,MAX(INDEX(($C$1:$C$1000=$I1)*ROW($C$1:$C$1000),)))) K1の式 =IF(MAX(INDEX(($C$1:$C$1000=$I1)*ROW($C$1:$C$1000),))=0,"",INDEX($D$1:$D$1000,MAX(INDEX(($C$1:$C$1000=$I1)*ROW($C$1:$C$1000),)))) J1は最初39502のような数値が表示されると思います。セルの書式を「日付」に変更して下さい。 しかし、これだと入荷数に対してだけしか検索がかかりませんでした。 出荷数にも同時に検索がかかるマクロを教えてください。 以上よろしくお願いします。

  • EXCELの表から飛び飛びにデータを抜き出したい

    A列に日付 B列にA列日付の株価 C列に日付(1週間おき) D列にC列の日付の株価をB列から抜き出して、1週間おきの株価のリストをつくりたいと考えています。(行削除を手作業で繰り返せば良いようにも思えるのですが、10年分のデータがあるため、途方もない作業量になってしまいます…) この場合、D列にはどのような数式を入力したら良いのでしょうか? なにとぞよろしくお願い申し上げます m(_ _;)m

  • Excel 検索に関する関数について教えてください

    色々と試しましたが、どうしてもうまくいかないので教えてください。 A列に休日を除いた日付(生産カレンダー)が入っています。 日付は手入力です。 A列 2008/5/14 2008/5/15 2008/5/16 2008/5/19 2008/5/20 2008/5/21 B1セルに任意の日付が入力された時、C1のセルに任意に入力されている数値分だけ前の日付をA列を参照してD1セルに表示したいのです。 例えばB1セルに2008/5/20、C1セルに3と入力された場合、D1セルには2008/5/20の3つ上のセルの値、2008/5/15を表示させたいのです。 生産カレンダーは列でなく、行にしても可です。 LOOKUP系やOFFSETなども複合したりして試してみましたが、うまくいきません。 ご教授よろしくお願いします。

  • エクセルの空白を詰めて別シートに表示

    sheet1のデータを参照して、空白を詰めてsheet2へ表示させたいんです! sheet1(元データになるもの)  A列 |B列|C列・・・ 1行目A|100|100 2行目B|  |200 3行目C|100| 4行目D|  |200 5行目E|100| 6行目F|  |100 ・ ・ sheet2(sheet1でB列に入力があるものを抽出)  A列 |B列 1行目A|100 2行目C|100 3行目E|100 sheet3(sheet1でC列に入力があるものを抽出)  A列 |B列 1行目A|100 2行目B|200 3行目D|200 4行目F|100 sheet2のA1に下記の式を入力してA列とB列に数式をコピー =IF(COUNT(Sheet1!$B$1:$B$6)<ROW(A1),"",INDEX(Sheet1!A$1:A$6,SMALL(IF(Sheet1!$B$1:$B$6<>"",ROW($A$1:$A$6)),ROW(A1)))) すると下記のように表示されます。 A1=A     B1=100 A2=#NUM! B2=#NUM! A3=#NUM! B3=#NUM! 4行目から空白 sheet2のA2のところにエラーが出ていますが、「関数の引数」のところで「数式の結果」には「100」と 正解が表示されています。(B2、A3、B3も同様に)数式の結果のところには正解が表示されています。 答えの「#NUM!」のところに正解を表示させるには、どうしたらいいですか? 見よう見まねでつくったのもで。。。関数にあまり詳しくありません。 よろしくお願い致します。

  • エクセルについての質問です。こんなことはできるのでしょうか?

    エクセルについての質問です。こんなことはできるのでしょうか? まず「データ」という名前のシートのA列に動詞,名詞など品詞が入っています。B列に高1,高2など学年が入っています。C列に数字(2や3など)が入っています。D列に英単語が入っています。E列に日本語訳が入っています。F列は作業列でF2のセルに=IF(AND(A2=問題作成!$A$2,B2=問題作成!$B$2,AND(C2>=問題作成!$C$2,C2<=問題作成!$D$2)),ROW(A1),"")が入っており,以下のセルに数式がコピーされています。 次に「問題作成」というシートのA5セルに=IF(COUNT(データ!$F$2:$F$2294)<ROW(A1),"",INDEX(データ!D$2:D$2294,SMALL(データ!$F$2:$F$2294,ROW(A1))))が入っており,以下のセルに数式がコピーされています。B5セルには=IF(COUNT(データ!$F$2:$F$2294)<ROW(B1),"",INDEX(データ!E$2:E$2294,SMALL(データ!$F$2:$F$2294,ROW(B1))))が入っており,以下のセルに数式がコピーされています。 「問題作成」のシートのA2セルは動詞や名詞など品詞が選択できるようになっています。B2セルは学年が選択できるようになっています。 この後,C2セルにWordでページを指定して印刷するときのように,2-3,6,8のように入力すると,「データ」のシートからそのページに該当する単語のみを「問題作成」のA5,B5以下に引っ張ってくるようなことはできますでしょうか? また,入っている数式に問題があれば,お教え願いたいのですが。 よろしくお願いいたします。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • エクセルで#DIV/0!を消す方法

    エクセルでパーセンテージを計算する表を作成しています。 A1に日付、B1に会員数、C1に出席者数、D1に出席率とします。D1にC1/B1の数式を入力します。D1の数式を隣のD2~D10までコピーしました。B,C行が空白または0の場合、#DIV/0!と表示されます。数式はそのまま残しておいてこのエラー表示を消す方法はありませんでしょうか。

  • excel 2つの条件(第三弾)

    http://okwave.jp/qa5057168.html の更に続きですが、    A   B   C  D  E   F  G 1  あ   3  22    4  15  ? 2  い   4  15    4  15  ? 3  う   2  10    4  10  ? 4  え   4  10 5  お   4  15 想定していなかった5行目を追加しました。 E1に=LARGE(B1:B5,1) E2に=LARGE(B1:B5,2) E3に=LARGE(B1:B5,3) F1とF2とF3に{=MOD(LARGE(B1:B5*(MAX(C1:C5)+1)+C1:C5,ROW(B1:B5)),MAX(C1:C5)+1)} G1に=INDEX($A$1:$A$5,SUMPRODUCT((B$1:B$5=E1)*(C$1:C$5=F1)*ROW(A$1:A$5)))を入れましたがB列とC列が同じ組み合わせがある場合ではエラーが出てしまいます。 G1に『い』、G2に『お』を表示させる事は可能でしょうか? 重ね重ね申し訳有りませんがわかる方おりましたらよろしくお願いします。

専門家に質問してみよう