首页 > 解决方案 > 删除查找列中的空格后,Google 表格数组公式可从另一个表中查找日期

问题描述

(由于我的组织政策,我无法共享样本表。)

我有两张数据表,如下所示:

表 1

在此处输入图像描述

表 2

在此处输入图像描述

现在,在Sheet1 中,在 C 列中,我正在寻找一个在删除空格后通过匹配子字符串ARRAYFORMULA来查找 in 的值,然后从 in 的行返回值。Sheet1!A:A Sheet2!A:ASheet2!A:ASheet2!B:B

我想出了一个非ARRAYFORMULA公式来获取每行的数据(Sheet1!C:C如下所示)。但是我的真实数据集有数千行,我不想将公式复制/粘贴到每个数据集中。

在此处输入图像描述

每行都有一个如下所示的公式:

=TEXTJOIN(
    ", "
  , TRUE
  , IFNA(
        FILTER(
            Sheet2!B:B
          , Sheet2!B:B <> ""
          , Sheet2!A:A <> ""
          , NOT(
                ISERROR(
                    SEARCH(
                        REGEXREPLACE(Sheet2!A:A, " ", "")
                      , A2
                    )
                )
            )
        )
      , "not found"
    )
)

我试图将其转换为ARRAYFORMULAinSheet1!B2但它没有产生预期的结果。公式为:

=ArrayFormula(
    TEXTJOIN(
        ", "
      , TRUE
      , IFNA(
            FILTER(
                Sheet2!B:B
              , Sheet2!B:B <> ""
              , Sheet2!A:A <> ""
              , NOT(
                    ISERROR(
                        SEARCH(
                            REGEXREPLACE(Sheet2!A:A, " ", "")
                          , A2:A
                        )
                    )
                )
            )
          , "not found"
        )
    )
)

标签: google-sheetsgoogle-sheets-formula

解决方案


好的,我终于让它与子字符串和SEARCH.

=Array_Constrain(TRANSPOSE(ArrayFormula(REGEXREPLACE(REGEXREPLACE(SPLIT(TEXTJOIN(", ",1,{ArrayFormula(IFERROR(HLOOKUP("Value",Sheet2!B:B,ArrayFormula(Transpose(SEQUENCE(COUNTA(Sheet2!A2:A),1,2))*(SEARCH(TRANSPOSE(SUBSTITUTE(FILTER(Sheet2!A2:A,LEN(Sheet2!A2:A))," ",)),FILTER(A2:A,LEN(A2:A)))>0)),0))),ArrayFormula(IF(SEQUENCE(COUNTA(A2:A)),";",""))}),", ;",0,0),"^, ",),"^$","not found"))),COUNTA(A2:A),1)

“可读”版本:

=Array_Constrain(
    TRANSPOSE(
        ArrayFormula(REGEXREPLACE(
            REGEXREPLACE(
                SPLIT(
                    TEXTJOIN(
                        ", ",
                        1,
                        {
                            ArrayFormula(IFERROR(
                                HLOOKUP(
                                    "Value",
                                    Sheet2!B:B,
                                    ArrayFormula(
                                        Transpose(
                                            SEQUENCE(COUNTA(Sheet2!A2:A),1,2)
                                        )*
                                        (SEARCH(
                                            TRANSPOSE(
                                                SUBSTITUTE(
                                                    FILTER(
                                                        Sheet2!A2:A,
                                                        LEN(Sheet2!A2:A)
                                                    ),
                                                    " ",
                                                )
                                            ),
                                            FILTER(A2:A,LEN(A2:A))
                                        )>0)
                                    ),
                                    0
                                )
                            )),
                            ArrayFormula(IF(
                                SEQUENCE(COUNTA(A2:A)),
                                ";",
                                ""
                            ))
                        }
                    ),
                    ", ;",
                    0,
                    0
                ),
                "^, ",
            ),
            "^$",
            "not found"
        ))
    ),
    COUNTA(A2:A),
    1
)

推荐阅读