【问题标题】:Copy value from a cell to the rest of a colum将单元格中的值复制到列的其余部分
【发布时间】:2021-11-07 08:09:28
【问题描述】:

有没有人可以帮助我分解这个冗长的公式,并通过检查独立元素来帮助我们理解它是如何工作的?

它需要两个连续的列,在本例中为 A 和 B。 首先从 A 中取一个值。 如果 A 下有下一个值,它将重复实际值直到该行。 如果 A 中没有剩余值,则返回“”(空白)

所以,在“B1”中,我们写了这个很长的公式:

ArrayFormula(IF(ROW(A:A)<=MATCH(2;1/(A:A<>"");1);LOOKUP(ROW(A:A);ROW(A:A)/IF(A:A<>"";TRUE;FALSE);A:A);))

结果是这样的:

A B
foo foo (here goes the formula)
foo
bar bar
bar
bar
qux qux
" "
" "
" "
" " (blank cells continue till the end of column)

这个数组非常有用,但我想是否有更清晰的公式,或者更好的方法来完成这项任务...... 我怀疑这个公式是一种转变,电子表格必须有一个优雅的资源来完成这种任务。

【问题讨论】:

    标签: google-sheets array-formulas


    【解决方案1】:

    使用:

    =ARRAYFORMULA(IF(B:B="",, VLOOKUP(ROW(A:A), IF(A:A<>"", {ROW(A:A), A:A}), 2, 1)))
    

    【讨论】:

      【解决方案2】:

      试试这个:

      =ARRAYFORMULA(
        IF(
          ROW(A:A) > MATCH(2, 1 / (A:A <> "")),,
            VLOOKUP(ROW(A:A), FILTER({ROW(A:A), A:A}, A:A <> ""), 2)
        )
      )
      

      MATCH(2, 1 / (A:A &lt;&gt; "")) 为您提供A:A 列中最后一个非空单元格的行号。


      或者如果顶部可能有空白单元格,则使用附加条件:

      =ARRAYFORMULA(
        IF(
            (ROW(A:A) > MATCH(2, 1 / (A:A <> "")))
          + (ROW(A:A) < MATCH("*", A:A,)),,
            VLOOKUP(ROW(A:A), FILTER({ROW(A:A), A:A}, A:A <> ""), 2)
        )
      )
      

      【讨论】:

      • 效果很好!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多