在 Excel 中的一系列范围中查找数字

在 Excel 中的一系列范围中查找数字

如下例所示,我有一张包含一系列范围的表。

每个范围都有相关描述。我想查找属于其中一个范围但未明确列为范围端点的数字的描述。

例如208:在下表中查找与该值相关的描述。

--------------------------------------
| Item | Location Description        |
|------------------------------------|  
| 1    | 100 to 103 agenda           |
| 2    | 106 to 111 Notes of Meeting |  
| 3    | 112 to 123 revision         |
| 4    | 200 to 210 factor           |
--------------------------------------

有没有办法做到这一点?

答案1

我猜这就是你要找的。如果你以略有不同的格式创建表格,则可以使用内置的 Excel 函数将其作为简单查找来执行:

截屏

不要在问题中以表格形式显示范围,而是使用包含每个范围起始值的表格。我添加了值来填补中断处的空白,并将描述指定为“错误”,以防有人尝试使用未定义的数字。

在 C 列中,我输入了一些数字来显示值相对于范围如何工作。结果的公式在 D 列中。在 D1 中:

=VLOOKUP(C1,A$1:B$7,2,1)

这将从表格第一列的 C 列中查找值,查找不超过查找值的最高值。它从表格的第二列中获取结果。最后一个1参数表示值按升序排列。

答案2

该方法

好的,根据您的评论,这是一种完全不同的方法,不涉及重建数据。这种方法使用几个辅助列来处理您的数据。这些可以隐藏,但我会在示例中显示它们,以便您了解其工作原理。

此示例基于以下假设:所有范围都涉及三位数。如果不是,我们需要以另一种方式解析范围端点,例如找到范围短语中的某个空格,然后计算范围值的位置。

截屏

我选择 B7 输入查找值,选择 C7 显示查找结果。辅助列是 E 和 F。

怎么运行的

在 E 列中,我们查看目标值是否在该行的范围内。如果是,则显示该行的描述。否则,单元格留空。因此,在 E 列中,只有找到目标的行才会显示描述。

F 列依次连接 E 列结果。由于这会将不匹配范围的空白与显示的任何描述连接起来,因此 F 列中的最后一个单元格将显示其出现的描述。C7 仅显示 F 列中的最后一个单元格。

公式

我的数据从第 2 行开始,因此 E2 包含:

=IF(AND(B$7>=--LEFT(B2,3),B$7<=--RIGHT(B2,3)),C2,"")

根据需要将其复制到行下。AND 将目标值 (B7) 与行范围的两端进行比较。它使用 LEFT 和 RIGHT 函数从字符串的每一端提取三位数字。双重否定强制 Excel 将这些数字字符串视为实际数字。末尾的空双引号是空值,如果测试为假,则单元格将为空白(引号之间应该没有任何内容)。

F2 包含:

=F1&E2

根据需要将其复制到该行。请注意,这依赖于 F1 为空。这会获取上方单元格中的所有内容,并将该行的 E 列中的结果连接起来。

结果单元格 C7 包含:

=F5

在此示例中,F5 是最后一行数据的结果。

如前所述,E 列和 F 列可以隐藏,因此我将操作分为两列,以便于直观查看。但是,E 列和 F 列可以合并,使用一个辅助列完成操作。例如,将 F 列设为辅助列,并将对 E 列单元格的引用替换为 E 列公式。因此,省略 E 列,F2 将是:

=F1&IF(AND(B$7>=--LEFT(B2,3),B$7<=--RIGHT(B2,3)),C2,"")

笔记

使用此解决方案,如果输入的目标数字未被定义范围之一覆盖,则在任何数据行中都找不到该数字,因此结果将为空白。

相关内容