可重複使用的 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 + 轉移 + Enter

片段中的單位減法 字符串(B2:B16)-1 是因為表頭而完成的。 出於同樣的原因,為了補償結果範圍相對於原始範圍的偏移,片段中的數字 XNUMX 被減去 字符串()-5

隱藏#NUM! 錯誤將出現在結果範圍 D6:D20 的空單元格中,您可以使用錯誤檢查函數 IF 和 EOSH,將我們的公式替換為稍微複雜一點的公式:

=如果(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 函數——它可以讓您更緊湊地解決問題:

=如果錯誤(ИНДЕКС($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 函數
  • 什麼是數組公式,它們的用途是什麼?

 

發表評論