繁体   English   中英

序列的数组公式

[英]Arrayformula of sequeses

我有一个包含 startDate、endDate 和 itemNumber 的预订列表。 现在我想列出这些日期之间的所有日期及其旁边的项目编号。 我有这个为 1 个保留工作,但我不能让它在一个 arrayformula 中使用多个保留。

我有一个包含我的公式和预期结果的样本表(编辑权限)。

这里有人可以帮助我吗?

样品表

两个公式版本:

项目栏(假设 K):

=ArrayFormula(TRANSPOSE(SPLIT(JOIN(,REPT(Reservation!D2:D&",",1+Reservation!C2:C-Reservation!B2:B)),",")))

或者

=ArrayFormula(
    IFNA(
        HLOOKUP(
            "StartDate",
            Reservation!B:B,
            MATCH(
                FILTER(K3:K,K3:K>0),
                Reservation!D2:D,
                0
            )+1,
            0
        )+IFNA(
            ROW(K3:K)-2-MATCH(K3:K,K3:K,0)
        )
    )
)

这将根据日期之间的差异生成项目列表。

日期列(假设 J):

=ArrayFormula(IFNA(HLOOKUP("StartDate",Reservation!B:B,MATCH(FILTER(K3:K,K3:K>0),Reservation!D2:D,0)+1,0)+IFNA(ROW(K3:K)-2-MATCH(K3:K,K3:K,0))))

或者

=ArrayFormula(
    TRANSPOSE(
        SPLIT(
            JOIN(,
                REPT(
                    Reservation!D2:D&",",
                    1+Reservation!C2:C-Reservation!B2:B
                )
            ),
            ","
        )
    )
)

根据 Item,在 Item 列(上图)中获取其偏移量,并将其添加到相应项目的 Start Date。

单一配方版本:

看起来很乱,但主要是将 K 代入上面的第二个公式。

=ArrayFormula(
{
  IFNA(HLOOKUP("StartDate",Reservation!B:B,MATCH(TRANSPOSE(SPLIT(JOIN(,REPT(Reservation!D2:D&",",1+Reservation!C2:C-Reservation!B2:B)),",")),Reservation!D2:D,0)+1,0)+IFNA(SEQUENCE(COUNTA(TRANSPOSE(SPLIT(JOIN(,REPT(Reservation!D2:D&",",1+Reservation!C2:C-Reservation!B2:B)),","))))-MATCH(TRANSPOSE(SPLIT(JOIN(,REPT(Reservation!D2:D&",",1+Reservation!C2:C-Reservation!B2:B)),",")),TRANSPOSE(SPLIT(JOIN(,REPT(Reservation!D2:D&",",1+Reservation!C2:C-Reservation!B2:B)),",")),0))),
  TRANSPOSE(SPLIT(JOIN(,REPT(Reservation!D2:D&",",1+Reservation!C2:C-Reservation!B2:B)),","))
})

或者,如果您更喜欢:

=ArrayFormula(
{
    IFNA(
        HLOOKUP(
            "StartDate",
            Reservation!B:B,
            MATCH(
                TRANSPOSE(
                    SPLIT(
                        JOIN(,
                            REPT(
                                Reservation!D2:D&",",
                                1+Reservation!C2:C-Reservation!B2:B
                            )
                        ),
                        ","
                    )
                ),
                Reservation!D2:D,0
            )+1,
            0
        )+IFNA(
            SEQUENCE(
                COUNTA(
                    TRANSPOSE(
                        SPLIT(
                            JOIN(,
                                REPT(
                                    Reservation!D2:D&",",
                                    1+Reservation!C2:C-Reservation!B2:B
                                )
                            ),
                            ","
                        )
                    )
                )
            )-MATCH(
                TRANSPOSE(
                    SPLIT(
                        JOIN(,
                            REPT(
                                Reservation!D2:D&",",
                                1+Reservation!C2:C-Reservation!B2:B
                            )
                        ),
                        ","
                    )
                ),
                TRANSPOSE(
                    SPLIT(
                        JOIN(,
                            REPT(
                                Reservation!D2:D&",",
                                1+Reservation!C2:C-Reservation!B2:B
                            )
                        ),
                        ","
                    )
                ),
                0
            )
        )
    ),
    TRANSPOSE(
        SPLIT(
            JOIN(,
                REPT(
                    Reservation!D2:D&",",
                    1+Reservation!C2:C-Reservation!B2:B
                )
            ),
            ","
        )
    )
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM