商品の番号と名前を含む注文のリストがあります。 たとえば、テーブルに含まれるすべての商品を注文番号でテーブルから引き出したいと思います。 多かれ少なかれ次のように:
素晴らしい機能 VLOOKUP (VLOOKUP) このような状況では、最初に見つかった一致によってのみデータを抽出できるため、部分的にしか役立ちません。 いちご、ブロッコリー. テーブルからすべての項目を検索して抽出するには、配列数式を使用することをお勧めします。 このように:
=INDEX($B$2:$B$16;少なくとも(IF($ E $ 2=A2:A16;LINE(B2:B16)-1;»»);LINE()-5))
次のように入力する必要があります。
- 結果を表示するセルを選択します (この例では、範囲 D6:D20 です)。
- 範囲の入力 (数式を最初のセルにコピー)
- Ctrlキー + シフト + 入力します
フラグメントの単位減算 文字列(B2:B16)-1 テーブルヘッダーのために行われます。 同じ理由で、元の範囲に対する結果の範囲のシフトを補正するために、フラグメントの数値 XNUMX が減算されます。 STRING()-5
#NUM! を非表示にするには結果の範囲 D6:D20 の空のセルに表示されるエラーの場合、エラー チェック関数 IF および EOSH を使用して、数式を少し複雑なものに置き換えることができます。
=IF(EOSH(ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;»»);СТРОКА()-5)));»»;ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;»»);СТРОКА()-5)))
Excel 2007 では、より便利な IFERROR 関数が登場しました。この関数を使用すると、問題をよりコンパクトに解決できます。
=IFエラー(ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;»»);СТРОКА()-5));»»)
PS
英語版の Excel では、これらの関数は次のようになります。
=INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5))
=IF(ISERR(INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5))),»»,INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5)))
=IFERROR(INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5)),»»)
- VLOOKUP 関数を使用してテーブル内のデータを検索する
- 最初の値だけでなく、任意の列で検索できる VLOOKUP2 関数の改良版
- PLEX アドオンの VLOOKUP2 および VLOOKUP3 関数
- 配列数式とは何ですか? また、それらは何に使用されますか?