【问题标题】:Using Match with Regex and Array formula in Sheets在表格中使用匹配正则表达式和数组公式
【发布时间】:2021-12-01 06:13:21
【问题描述】:

我有一个名字列表,我想知道姓氏是否有交叉匹配。 因此,如果 Family 列中的 all 包含姓氏(如 B 列中的那个) - 会有匹配,否则不会。 我从清理/拆分名称开始

=TRANSPOSE(ARRAYFORMULA(TRIM( SPLIT(SUBSTITUTE($A2," and",","),","))))

然后对每个案例只进行姓氏的 T/F 匹配

=ISNUMBER(MATCH(REGEXEXTRACT($B$2,"\w+$"),REGEXEXTRACT(D2,"\w+$"),0))

我想把这个 MATCH 作为一个数组来做,但它不起作用。然后我必须对 TRUE 值进行计数,如果全部为 TRUE,则返回 MATCH,否则返回 MATCH。 我显然想在一个单元格中执行此操作,但因为无法将 MATCH 设为数组而被卡住了。我希望这是有道理的,或者我是不是走错了路。 这是sample sheet

【问题讨论】:

  • 为什么安迪·斯科特不匹配?
  • 因为我只想知道哪些是所有成员都拥有的。名字。对于斯科特来说,只有诺亚斯科特是匹配的——所以我想我可以微调它以显示一个匹配或某种东西。如果只有一个,但此时我只想知道是否所有匹配。我正在使用 col. B 名字只是作为家庭的参考。名字。

标签: regex google-sheets match array-formulas transpose


【解决方案1】:

使用这个

C2=trim(index(split(B2," "),1,COUNTA(split(B2," "))))

D2=SUBSTITUTE(A2,"and",",")

E2=if(COUNTA(split(D2,C2,false))=counta(split(D2,",",false)),"matched","not matched")

1- C2 从句子中获取最后一个单词作为姓

2- D2 将“and”替换为“,”

3- E2 将 D2 拆分为 "," 并将 D2 拆分为 C2 然后计数并比较是否相同表示全部匹配

结果

【讨论】:

    【解决方案2】:

    尝试:

    =ARRAYFORMULA(IF(A2:A="",,IF(1+LEN(
     REGEXREPLACE(SUBSTITUTE(A2:A, "and", ","), "[^,]", ))=
     MMULT(N(IFERROR(IF(SPLIT(SUBSTITUTE(A2:A, "and", ","), ",")="",,
     REGEXMATCH(TRIM(SPLIT(SUBSTITUTE(A2:A, "and", ","), ",")), 
     REGEXEXTRACT(B2:B, "\w+$"))))), 
     SEQUENCE(COLUMNS(SPLIT(SUBSTITUTE(A2:A, "and", ","), ",")), 1, 1, 0)), 
     "match", "no match")))
    

    【讨论】:

    • 沙家疑惑地看着你。 :)
    【解决方案3】:

    给你另一个:

    =ARRAYFORMULA(
      IFS(
        A2:A = "",,
        ISNA(MATCH(
          ROW(A2:A),
          QUERY(
            QUERY(
              SPLIT(
                FLATTEN(
                  FILTER(
                      ROW(A2:A) & "♥"
                    & --NOT(REGEXMATCH(
                          SPLIT(
                            REGEXREPLACE(A2:A, ",\s*|\s+and\s+", "♥"),
                            "♥"
                          ),
                          "^$|" & REGEXEXTRACT(B2:B, "\s(\w+)$")
                        )),
                    A2:A <> ""
                  )
                ),
                "♥"
              ),
              "SELECT Col1, SUM(Col2)
               GROUP BY Col1",
            ),
            "SELECT Col1
             WHERE Col2 = 0",
          ),
        )),
          "NO MATCH",
        True,
          "MATCH"
      )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 2017-04-10
      相关资源
      最近更新 更多