我找不到LOOKUP从上到下列搜索的方法。这是情况。我需要为Excel创建一个公式来搜索句子中的硬件部分。
示例:
句子(A1)客户PC无法开启。检查主板。主板故障。更换主板。 PSU没有足够的电量。更换PSU。
这是查找范围列(HARDWARE)
结果范围栏(HARDWARE_PART)
我使用的公式是
LOOKUP(9999;SEARCH(HARDWARE;A1);HARDWARE_PART)
结果将是“主板”。因为LOOKUP将从下到上搜索列。
我现在要做的是LOOKUP从上到下搜索列,以便它可以检测另一个替换部分。
答案 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))), "")
以降序优先顺序填写后续匹配。
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。早期版本不提供。