首页 > 解决方案 > Excel - 如何在另一个工作表中引用带有 x 的单元格旁边的单元格?

问题描述

在表 1 中,第 1 列是一个垂直的单词列表(例如 A1:A25)。

在表 1 第 2 列中,我想随机放置一个 X(例如,在 B1:B25 之间的一个单元格中)

在表 2 中,我想返回表 1 中 X 左侧的任何单词。我该怎么做?

标签: matchvlookupoffset

解决方案


如果“X”在左边,你可以使用 VLOOKUP 找到它右边的单词,但如果“X”在右边,那么你需要 INDEX 和 MATCH:

=INDEX(Sheet1!$A$1:$A$25,MATCH("X",Sheet1!$B$1:$B$25,0))

如果您需要找到第 N 个“X”,则不能使用该方法,因为 MATCH 返回它找到的第一个匹配项的行号。因此,您需要 SMALL 来获得包含“X”的第 N 个最小行:

=INDEX(Sheet1!$A$1:$A$25,SMALL(IF(Sheet1!$B$1:$B$25="X",ROW(Sheet1!$B$1:$B$25)-ROW(INDEX(Sheet1!$B$1:$B$25,1,1))+1),N))

将公式中的最后一个“N”设置为您要查找的项目 - 如果它是 1,那么它会找到第一个带有“X”的项目,如果它是 2,它会找到第二个,等等。

所以对于第一个“X”:

=INDEX(Sheet1!$A$1:$A$25,SMALL(IF(Sheet1!$B$1:$B$25="X",ROW(Sheet1!$B$1:$B$25)-ROW(INDEX(Sheet1!$B$1:$B$25,1,1))+1),1))

对于第二个:

=INDEX(Sheet1!$A$1:$A$25,SMALL(IF(Sheet1!$B$1:$B$25="X",ROW(Sheet1!$B$1:$B$25)-ROW(INDEX(Sheet1!$B$1:$B$25,1,1))+1),2))

这是一个数组公式,因此当您输入它时,您需要按 Control-Shift-Enter 而不是单独按 Enter。输入后,它会用括号括起来显示。

我从https://exceljet.net/formula/get-nth-match-with-index-match改编了这个公式 ,他们对它的工作原理进行了深入的描述。


推荐阅读