根据相邻列列出 Excel 中的非空白单元格

根据相邻列列出 Excel 中的非空白单元格

给定 A 列和 B 列,我想要列出在 C 列中其行中具有非空 B 单元格的 A 值:

A     B     C
One         Two
Two   x     Four
Three
Four  x
...

我目前想到的最好的办法是

{=INDEX(A1:A4;MATCH(TRUE;B1:B4<>"";0))}

这给了我在 C1 中的“二”,但我该如何继续呢?

笔记:这是我的问题的简化版本:实际上,有多个像 B 这样的列,因此筛选不是一种选择。此外,B 和 C 不在同一张表中,我希望每当我编辑 B 表时 C 表都会自动更新,因此复制粘贴也不实用。

答案1

在此处输入图片描述

这将适用于您的示例,如果您有标题、更多列或更多行,可以轻松进行调整。

=IFERROR(INDEX($A$1:$A$4,SMALL(IF(ISBLANK($B$1:$B$4),"",ROW($B$1:$B$4)-ROW($C$1)+1),ROW(C1)-ROW($C$1)+1)),"")

在 C1 中输入公式并按住Ctrl+Shift然后按Enter。将公式扩展到 C4 以获取示例的完整结果。

现在可以在示例中插入标题或列,这仍然有效。要处理更多行,请更改范围$A$1:$A$4$B$1:$B$4相应地

另请参阅 Microsoft 支持文章查找满足条件的第 n 个值

答案2

为什么不就地过滤列表?根据 B 列过滤所有不包含 B 列的行的列表空白的例如

在此处输入图片描述

然后,如果您在 C 列需要它,只需复制并粘贴它即可。请记住,一旦您过滤,某些单元格就会被隐藏,因此复制/粘贴可能看起来不正确,直到您清除过滤器。

答案3

好吧,如果你需要一个公式,这将适用于简单示例。我不太清楚如何扩展它以包含其他列(是的,我承认我拼凑了这一切,这让我很沮丧)。

它是一个数组公式,因此 CSE ( Ctrl Shft Enter) 并向下拖动。

=INDEX($A$2:$A$6,SMALL(IF($B$2:$B$6<>"",MATCH(ROW($B$2:$B$6),ROW($B$2:$B$6)),""),ROW(A1)))

我知道这不是最好的办法,但直到巴里杰瑞艾克赛尔或者某人来了,这是最好的有。

相关内容