在表格中使用匹配正则表达式和数组公式

Using Match with Regex and Array formula in Sheets

我有一个姓名列表,我想知道其中的姓氏是否存在交叉匹配。 因此,如果 Family 列中的 all 包含姓氏(如 B 栏中的姓氏)- 就会有匹配项,否则不会。 我从 cleaning/splitting 名字开始

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

然后 T/F 每个案例只匹配姓氏

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

我想将此 MATCH 作为数组来执行,但它不起作用。然后我必须计算 TRUE 值,如果所有都是 TRUE return 匹配,否则不匹配。 我显然想在单个单元格中执行此操作,但由于无法将 MATCH 设为数组而卡住了。我希望这是有道理的,或者我是以错误的方式进行的。 这是 sample sheet

使用这个

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 将“和”替换为“,”

3- E2用“,”拆分D2,用C2拆分D2,然后统计比较是否相同表示全部匹配

结果

尝试:

=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")))

另一个给你:

=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"
  )
)