- ベストアンサー
エクセルの検索
お世話になります。 エクセルの検索でやり方が分からないので質問させて頂きます。 A列:商品名 B列:金額 を下に入力していきます。それに対して C1セルに検索する商品名を入力する事で D1~D20に検索した商品の金額を表示していきます。 ただしB列の下から順に検索し、D1~D20に上から順に表示したいです。 例: A列 B列 りんご 100円 みかん 150円 キウイ 160円 りんご 130円 キウイ 500円 りんご 300円 これに対しC1に「りんご」と入力する事で、 D1:300円 D2:130円 D3:100円 と表示したいです。 ネットで調べて D1=LOOKUP(2,1/(入力!$A:$A=$C$1),入力!B:B) と入れて下へコピペしたのですが、 全て同じ数値が表示されてしまいます。 分かる方がいましたら、回答お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>D1=LOOKUP(2,1/(入力!$A:$A=$C$1),入力!B:B) >と入れて下へコピペしたのですが、 > 全て同じ数値が表示されてしまいます。 LOOKUP関数は検査値が最初に見つかった位置に対応する対象セルの値を返しますので複数の検査値を順次抽出することはできません。 提示の数式では検査範囲を前処理して故意にエラーを起こして検査対象を絞り込んでいます。更に、数値の場合の特性を使って検査範囲の最大値より大きい値を指定することで最後に見つかった検査値以下の値を抽出しています。 従って、あなたの目的に合った数式ではありません。 下記の数式を試してください。 但し、「入力」シートのB列に文字列が混在しているときはエラーになりますので注意して下さい。 =IF(COUNTIF(入力!A:A,$C$1)>=ROW(),LARGE(INDEX((入力!A:A=$C$1)*入力!B:B,0),ROW()),"")
その他の回答 (3)
- chayamati
- ベストアンサー率41% (260/624)
- msMike
- ベストアンサー率20% (364/1804)
[No.1補足]へのコメント、 [No.1]で提示した式を次のように変更されたし =IFERROR(INDEX(B$1:B$7,LARGE(IF(A$2:A$7=C$1,ROW(B$2:B$7)),ROW(A1))),"") 【お断り】上式も必ず配列数式として入力のこと [並べ替え]の順序がデータの降順(昇順)でなければ、アナ雪(Frozen)の映画挿入歌♪ありのままで(Let It Go)♪(つまり、行番号の昇順ネ)が常識的かと考えますが、私には非常識に見える行番号の降順に貴方が希望する理由は何ですか?参考までに教えてください。
お礼
こちらでもできましたが、No2さんの回答で解決したので、No2さんでベストアンサーを付けたいと思います。 ちなみに理由は、入力する時と表示する時の感覚的な問題です。明確な理由はありません。
- msMike
- ベストアンサー率20% (364/1804)
添付図参照 【お断り】提示式は必ず配列数式として入力のこと
補足
回答ありがとうございます。 やってみたのですが、結果が正しく表示されません。 恐らく、「B列の下から順に検索し、D1~D20に上から順に表示」ではなく 「B列を検索し、大きい順に表示」 となってしまっているのではないでしょうか。 上記の例が誤認させる例になってしまっていますが、 例: A列 B列 りんご 130円 みかん 150円 キウイ 160円 りんご 100円 キウイ 500円 りんご 300円 この例だとC1に「りんご」と入力する事で、 D1:300円 D2:100円 D3:130円 と表示させたいです。 紛らわしい例で申し訳ありません。 分かりましたら回答お願いします。
補足
ありがとうございます。できました!