可重复使用的 VLOOKUP (VLOOKUP)

内容

我们有一份带有商品编号和名称的订单清单。 例如,我想按订单号从表中取出其中包含的所有商品。 或多或少是这样的:

 

精彩的功能 VLOOKUP(VLOOKUP) 在这种情况下,它只会部分帮助,因为只能通过第一个找到的匹配项来提取数据,即只会给我们 苹果. 要从表中查找并提取所有项目,最好使用数组公式。 像这个:

=指数($B$2:$B$16;最小(IF($ E $ 2=A2:A16;LINE(B2:B16)-1;»»);LINE()-5))

必须按以下方式输入:

  1. 选择应显示结果的单元格(在我们的示例中,这是范围 D6:D20)
  2. 输入(将公式复制到第一个单元格)范围
  3. express 按Ctrl + 转移 + 输入

片段中的单位减法 字符串(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 函数
  • 什么是数组公式,它们的用途是什么?

 

发表评论