是否有一个数组公式可以用上面单元格的内容填充列中的所有空白单元格?

Posted

技术标签:

【中文标题】是否有一个数组公式可以用上面单元格的内容填充列中的所有空白单元格?【英文标题】:Is there an arrayformula to fill all blank cells in a column with the content from the cell above? 【发布时间】:2019-04-26 04:38:35 【问题描述】:

在以下 Google 表格中:

  A          B
 ------------------------
1| Tom     | something  |
2|         | something  |
3| John    | something  |
4| Lana    | something  |
5|         | something  |
6|         | something  |
7| Jason   | something  |
 ------------------------

我希望将一个数组公式应用于 A 列,该公式将自动用上方单元格中的最后一个数据填充任何空白(或上方,如果有多个空白)。

结果应该是这样的:

  A          B
 ------------------------
1| Tom     | something  |
2| Tom     | something  |
3| John    | something  |
4| Lana    | something  |
5| Lana    | something  |
6| Lana    | something  |
7| Jason   | something  |
 ------------------------

由于工作表可能很大,将公式应用于每个单元格是不切实际的。

如果我将公式 =if(ISBLANK(A2), A1) 手动粘贴到空白处,它将填充它们,但将所述公式拖到整列上将不起作用。

【问题讨论】:

【参考方案1】:

是的,您可以使用 vlookup 来做到这一点,方法是创建一个包含行号的数组并使用 vlookup 的不精确查找形式,以便它找到包含文本的前一行:

=ArrayFormula(query(vlookup(row(A:A),if(A:A<>"",row(A:A)),A:A,2),B:B,"select Col1,Col2 where Col2 is not null"))

【讨论】:

【参考方案2】:

实现此目标的最简单方法是创建一个新列,并使用从 B2 向下的公式 =IF(ISBLANK($A2), $B1, $A2)。我认为您的意思是您不能简单地将列替换到位,对吗?在这种情况下,这将解决它,但它不是一个单一的数组公式。如果您担心将公式插入所有行,请尝试选择第一个单元格,CTRL+SHIFT+向下箭头键选择整个范围,CTRL+ENTER 粘贴公式。

如果你真的需要一个数组公式,人们希望=ArrayFormula(IF(ISBLANK(A2:A), B1:B, A2:A)) 或类似的东西可以工作,但不幸的是,Sheets 并没有迭代这个公式的结果,所以它确实如此。其他功能(例如 vlookup)do 可以正常工作,但我不确定如何编写公式来使用这些功能来实现您在此处要做的事情。

【讨论】:

【参考方案3】:

用一个“NO”来回答你的问题(虽然有点简单)。

一种可能适合的方法是过滤 ColumnA 以仅选择 (Blanks) 并在第一个空白单元格(在您的情况下为 A2)中输入:

=A1

1 是公式单元格正上方的行号。

复制到适合并编辑>复制>编辑>特殊粘贴>仅粘贴值,然后取下过滤器。

【讨论】:

以上是关于是否有一个数组公式可以用上面单元格的内容填充列中的所有空白单元格?的主要内容,如果未能解决你的问题,请参考以下文章

通过在一个单元格中输入公式来填充不同单元格的数组公式

提取一列中倒数第二个单元格数值?

根据另一个单元格的值自动填充单元格,不带公式

用上面单元格中的值查找并替换空白值[重复]

VBA - 检查单元格的内容是否为粗体

应用公式,然后自动填充数据,直到列中的最后一个可见单元格:VBA