Excel - 首先在搜索列中查找值,然后从找到的列中查找行

Excel - 首先在搜索列中查找值,然后从找到的列中查找行

在此处输入图片描述

我有上面的表格。

首先,我需要根据管道直径搜索列。例如,我需要搜索 3/4 英寸管道。(这可以在 D 列中找到)。

其次,我需要通过这个管道从找到的这一列(D 列)的行中搜索借方。

例如借方 0.67。如您在表中看到的,在 D 列中没有借方 = 0.67,因此我需要一个函数来返回两个不同字段中的值 0.63(单元格 D5)和 0.77(单元格 D6)。

是否有我可以使用的功能(功能组合)?

我的第二个例子:要搜索的直径是 1 1/4 英寸,借方是 4.4 直径 1 1/4 英寸位于 F 列。而借方 4.4 不在 F 列,所以我需要返回值 4.3(单元格 F9)和 4.59(单元格 F10)。

我尝试了 =INDEX($AG$2:$AT$31,MATCH(W4,$AG$2:$AG$31,0),MATCH(Y4,$AG$2:$AT$2,0)),但这并没有返回所需的值。我还尝试了 =SUBSTITUTE(ADDRESS(1,MATCH($Y6,$A$1:$N$1,0)),"",""),以便先获取所需的列,然后以某种方式获取行值,但同样没有成功。

答案1

您几乎已经明白了。 MATCH()只能在一行或一列中查找值。可以 INDEX()从表中提取一个值,通常,您使用 MATCH() 来指定行号和列号,通过查找正确的行和列标题。

你的问题有点棘手,因为你没有MATCH()可以使用的行标题。所以你需要(首先)获取适当的列,然后在该列中匹配一个数字。

让我们分部分构建公式,这样就更容易看清发生了什么。 INDEX(array,row_num,col_num)将返回一列,您所要做的就是忽略 row_num。假设您要查找的管道直径在 B25 中,如下面的屏幕截图所示。然后此公式将返回数据表的相应列:

INDEX(B2:J20,,MATCH(B25,B1:J1,0))

您可以通过突出显示公式栏中的公式并按 F9 来检查这一点。这将向您显示以 B25 为标题的列中的值列表。

接下来我们要找到该列中的借方,因此我们在公式中使用该列MATCH()

MATCH(C25,INDEX(B2:J20,,MATCH(B25,B1:J1,0)),1)

请注意,对于此 outer MATCH(),我们使用 match_type 1 而不是 0。Match_type 0 强制精确匹配,但如果找不到精确匹配,match_type 1 将返回最接近的较低值。这正是您想要的。

现在,唯一的问题是这个公式只返回位置它找到的匹配项,而不是实际值。但现在我们知道了列和行,因此我们可以将其包装在另一个中INDEX()以获取借记的实际值:

=INDEX(B2:J20,MATCH(C25,INDEX(B2:J20,,MATCH(B25,B1:J1,0)),1),MATCH(B25,B1:J1,0))

这里最后一个MATCH()指定了col_num,第一个指定了row_num。这个公式在下图的E24中。它没有找到与借方1.7完全匹配的数,所以它返回了下一个较低的数字1.59。

在此处输入图片描述

我们只需将 row_num 加 1 即可获得下一个更高的借方:

=INDEX(B2:J20,MATCH(C25,INDEX(B2:J20,,MATCH(B25,B1:J1,0)),1)+1,MATCH(B25,B1:J1,0))

如果找到完全匹配,我们可以让它返回空白:

=IF(F24<>"Match",INDEX(B2:J20,MATCH(C25,INDEX(B2:J20,,MATCH(B25,B1:J1,0)),1)+1,MATCH(B25,B1:J1,0)),"")

F24和F25中的公式为:

=IF(E24=C25,"Match","Next Lower")

=IF(E24=C25,"","Next Higher")

希望这能有所帮助。祝你好运。

编辑:要从 A 列返回相应的值,我们可以使用 OFFSET()。偏移量从指定的单元格(我们在这里使用 A1)开始,并向下移动指定的行数。对于行数,我们将使用与获取借方位置相同的表达式: MATCH(C25,INDEX(B2:J20,,MATCH(B25,B1:J1,0)),1)

整个公式是:

=OFFSET(A1,MATCH(C25,INDEX(B2:J20,,MATCH(B25,B1:J1,0)),1),0)

我们可以通过简单地将行数加 1 来获得下一个更高的值,就像前面一样:

=OFFSET(A1,MATCH(C25,INDEX(B2:J20,,MATCH(B25,B1:J1,0)),1)+1,0)

答案2

@Rajesh SI 根据您的要求,我在这里发布了两张屏幕截图。

在此处输入图片描述

在此处输入图片描述

答案3

您的问题可以通过双向查找来解决。您需要找到条件指定列和行的值。

查看下面的屏幕截图。

在此处输入图片描述

以下公式查找以 开头的行中的值0.04并在以3/4”.结果是0.63

=INDEX(B2:E10,MATCH(A5,A2:A10,0),MATCH(D1,B1:E1,0))

笔记,如果我的解决方案不是您想要的,请在下面评论。

我希望这有帮助。

相关内容