仅根据开始/结束日期引入某些数据?

问题描述 投票:0回答:1

我有一个公式,这里有人协助我,以便从多个工作表中引入数据。

=filter(choosecols('Master Line List'!A:I,3,6,9,7,1), 'Master Line List'!I:I=C1, if(D1="All",'Master Line List'!G:G<>"",'Master Line List'!G:G=D1),
 byrow('Master Line List'!F:F,lambda(Σ,or(bycol(split(Σ,char(10)),lambda(Λ,isbetween(--left(Λ,find(" ",Λ)),G2,H2)))))))

效果很好,但我想更进一步。计算表中的 G2 和 H2 是开始/结束日期。目前,如果换行符中的任何一个日期包含 G2 和 H2 之间的日期,则当前会提取整个注释。

是否可以仅引入开始/结束日期内的注释并排除较早的换行符?

这是我尝试过的,但出现公式解析错误

=filter(
    choosecols('Master Line List'!A:I, 3, 6, 9, 7, 1),
    'Master Line List'!I:I = C1,
    if(D1 = "All", 'Master Line List'!G:G <> '', 'Master Line List'!G:G = D1),
    byrow(
        'Master Line List'!F:F,
        lambda(
            Σ,
            or(
                bycol(
                    split(Σ, char(10)),
                    lambda(
                        Λ,
                        and(
                            isdate(--left(Λ, find(" ", Λ))),
                            isbetween(--left(Λ, find(" ", Λ)), G2, H2)
                        )
                    )
                )
            )
        )
    ),
    'Master Line List'!F:F <> ""
)

这是我的工作表的链接,右侧是预期结果示例

非常感谢任何帮助,谢谢!

google-sheets
1个回答
0
投票

您可以重复使用原来的公式,如下

=filter({choosecols('Master Line List'!A:I,3),map('Master Line List'!F:F,lambda(c,if(c="","",let(raw,split(c,char(10)),TF,map(raw,lambda(Λ,isbetween(--left(Λ,find(" ",Λ)),G2,H2))),join(char(10),filter(raw,TF)))))),choosecols('Master Line List'!A:I,9,7,1)}, 'Master Line List'!I:I=C1, if(D1="All",'Master Line List'!G:G<>"",'Master Line List'!G:G=D1),
 map('Master Line List'!F:F,lambda(Σ,or(bycol(split(Σ,char(10)),lambda(Λ,isbetween(--left(Λ,find(" ",Λ)),G2,H2)))))))

评论栏替换为

map('Master Line List'!F:F
   ,lambda(c,if(c=""
               ,""
               ,let(raw
                   ,split(c,char(10))
                   ,TF
                   ,map(raw
                   ,lambda(Λ,isbetween(--left(Λ,find(" ",Λ)),G2,H2)))
© www.soinside.com 2019 - 2024. All rights reserved.