MS Excel LOOKUP从上到下列

时间:2016-05-09 05:09:38

标签: excel excel-2007 worksheet-function worksheet

我找不到LOOKUP从上到下列搜索的方法。这是情况。我需要为Excel创建一个公式来搜索句子中的硬件部分。

示例:

  句子(A1)

     
    

客户PC无法开启。检查主板。主板故障。更换主板。 PSU没有足够的电量。更换PSU。

  

这是查找范围列(HARDWARE)

  • 更换PSU
  • 更换主板

结果范围栏(HARDWARE_PART)

  • PSU
  • 主板

我使用的公式是

LOOKUP(9999;SEARCH(HARDWARE;A1);HARDWARE_PART)

结果将是“主板”。因为LOOKUP将从下到上搜索列。

我现在要做的是LOOKUP从上到下搜索列,以便它可以检测另一个替换部分。

1 个答案:

答案 0 :(得分:3)

使用命名范围是一个很好的步骤;动态命名范围甚至更好。但是,当它们没有在第一行中启动时,它们会产生混淆,试图将正确的相对行号返回到INDEX function

我的两个命名范围(例如HARDWARE和HARDWARE_PART)使用引用:公式为,

=Sheet1!$AA$2:INDEX(Sheet1!$AA:$AA, MATCH("zzz",Sheet1!$AA:$AA))
=Sheet1!$AB$2:INDEX(Sheet1!$AB:$AB, MATCH("zzz",Sheet1!$AA:$AA))

这需要修改返回的行 1 ,因为它们是从第二行开始的。

B1中的标准公式是

=IFERROR(INDEX(HARDWARE_PART, AGGREGATE(15, 6, (ROW(HARDWARE)-1)/ISNUMBER(SEARCH(HARDWARE, $A1)), COLUMN(A:A))), "")

以降序优先顺序填写后续匹配。

motherboard

IFERROR function'包装'可以通过将错误返回替换为零支持字符串来避免在非匹配上显示#NUM!错误。

如果您要撤消优先级,请为 14 SMALL function换掉 15 AGGREGATE¹LARGE function选项)。

Pre-xl2010附录

对于无法使用AGGREGATE函数的Excel版本,此标准非CSE公式会复制结果。在B1中,

=IFERROR(INDEX(HARDWARE_PART, SMALL(INDEX(ROW(HARDWARE)-1+ISERROR(SEARCH(HARDWARE, $A1))*1E+99, , ), COLUMN(A:A))), "")

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。