excel - MS Excel 从上到下查找列

标签 excel excel-2007 worksheet-function worksheet

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

示例:

Sentence (A1)

Customer PC can't turn on. Check motherboard. Motherboard faulty. Replace motherboard. PSU don't have enough power. Replace PSU.

这里是查找范围列(硬件)

  • 更换电源
  • 更换主板

结果范围列(HARDWARE_PART)

  • 电源
  • 主板

我使用的公式是

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

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

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

最佳答案

使用命名范围是一个很好的步骤;动态命名范围甚至更好。然而,它们通过尝试将正确的相对行号返回到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 “wrapper”可以通过用零长度字符串替换错误返回来避免在不匹配时显示 #NUM! 错误。

如果您想反转优先级,请交换 15 ( SMALL function ) AGGREGATE¹ 14 选项 ( LARGE function )。

xl2010 之前的附录

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

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

¹ AGGREGATE function是随 Excel 2010 引入的。它在早期版本中不可用。

关于excel - MS Excel 从上到下查找列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37108081/

相关文章:

vba - Tan() 返回错误值

excel - 从 Excel 中的分隔字符串中提取单词?

excel - 计算满足特定条件的 Excel 电子表格中的唯一行

vb.net - 浮点精度视觉基础

vba - Excel宏将数据从一张表移动到另一张基于列名和单元格内容

excel - excel中带有图标集和相对引用的条件格式

excel - 如何删除Excel单元格中的特定单词?

c# - EPPlus:创建排序列

Excel 电子邮件验证公式

excel - CSV 文件必须保存两次