给定 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 列需要它,只需复制并粘贴它即可。请记住,一旦您过滤,某些单元格就会被隐藏,因此复制/粘贴可能看起来不正确,直到您清除过滤器。