填写 ={ARRAYFORMULA()} 中几列的空白单元格

Fill in blank cells from several columns in ={ARRAYFORMULA()}

我有一个人性化的 sheet,具有稀疏的分层数据:

SEASON  | FRUIT      | LETTER 
-----------------------------
Winter  |            |
        | Lemons     |
        |            | Delta
Summer  |            |
        |            | Alpha
        |            | Beta
        | Pears      |
        |            | Gamma

(请注意 AlphaBeta 没有 FRUIT 条目。)

我想使用 ARRAYFORMULA() 生成一个新列,以包含 LETTER:

的完整“路径”
SEASON  | FRUIT      | LETTER | PATH
------------------------------------
Winter  |            |        | Winter//
        | Lemons     |        | Winter/Lemons/
        |            | Delta  | Winter/Lemons/Delta
Summer  |            |        | Summer//
        |            | Alpha  | Summer//Alpha
        |            | Beta   | Summer//Beta
        | Pears      |        | Summer/Pears/
        |            | Gamma  | Summer/Pears/Gamma

请帮助我理解如何写这样的ARRAYFORMULA()


我正在尝试基于 中的答案的方法,但我一直坚持将 FRUIT 重置为空字符串以获得新的 SEASON。 IE。这个天真的实现会产生 Summer/Lemons/Alpha 而不是 Summer//Alpha:

={ ARRAYFORMULA(
            IFERROR(VLOOKUP(ROW(SEASON), IF(SEASON<>"", { ROW(SEASON), SEASON }), 2, 1), "")
    & "/" & IFERROR(VLOOKUP(ROW(FRUIT),  IF(FRUIT<>"",  { ROW(FRUIT), FRUIT }),   2, 1), "")
    & "/" & LETTER
) }

这是专门为回答这个问题而创建的 sample spreadsheet

您将在名为“可能的解决方案”的选项卡上的单元格 E1 中找到此公式。

=ARRAYFORMULA(IF(LEN(A:A&B:B&C:C),VLOOKUP(ROW(A:A),FILTER({ROW(A:A),A:A},LEN(A:A)),2,1)&"/"&VLOOKUP(ROW(B:B),FILTER({ROW(B:B),B:B},LEN(A:A&B:B)),2,1)&"/"&C:C,))

它使用 VLOOKUP(ROW(),FILTER(),[index],TRUE) 技术将路径的相关部分相互附加。

注意图像中的公式部分,我认为这是您正在尝试的策略的问题症结...