再利用可能な VLOOKUP (VLOOKUP)

内容

商品の番号と名前を含む注文のリストがあります。 たとえば、テーブルに含まれるすべての商品を注文番号でテーブルから引き出したいと思います。 多かれ少なかれ次のように:

 

素晴らしい機能 VLOOKUP (VLOOKUP) このような状況では、最初に見つかった一致によってのみデータを抽出できるため、部分的にしか役立ちません。 いちご、ブロッコリー. テーブルからすべての項目を検索して抽出するには、配列数式を使用することをお勧めします。 このように:

=INDEX($B$2:$B$16;少なくとも(IF($ E $ 2=A2:A16;LINE(B2:B16)-1;»»);LINE()-5))

次のように入力する必要があります。

  1. 結果を表示するセルを選択します (この例では、範囲 D6:D20 です)。
  2. 範囲の入力 (数式を最初のセルにコピー)
  3. 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 関数
  • 配列数式とは何ですか? また、それらは何に使用されますか?

 

コメントを残す