检查单元格是否包含所有逗号分隔值
Check if cell contains all comma separated values
我有一个 sheet 包含以下数据:
| Text | Value | Value | Value |
|:----------------------------------------|:---------|:---------|:---------|
|Jax and Jax friend Kung Lao fight Raiden | jax | kung lao | raiden |
|Jax and Jax friend Kung Lao fight Raiden | kitana | kung lao | raiden |
以及以下公式:
=SUMPRODUCT( -- ISNUMBER(SEARCH(B1:D1;A1)))=COUNTA(B1:D1)
=SUMPRODUCT( -- ISNUMBER(SEARCH(B2:D2;A2)))=COUNTA(B2:D2)
哪个returns:
TRUE
FALSE
这按预期工作。我得到 TRUE 的所有值都在文本单元格中找到,如果缺少一个或全部,则 FALSE。
现在,我想修改为只在一个逗号分隔的单元格中搜索,而不是在多个单元格中搜索。像这样:
| Text | Values | Formula |
|:----------------------------------------|:-----------------------|:--------|
|Jax and Jax friend Kung Lao fight Raiden | jax,kung lao,raiden | TRUE |
|Jax and Jax friend Kung Lao fight Raiden | kitana,kung lao,raiden | FALSE |
我试过 =SUMPRODUCT( -- ISNUMBER(SEARCH({B2};A2)))=COUNTA({B2})
但它不起作用。
尝试拆分以逗号分隔的列表并像使用单元格区域一样使用拆分数组。
=SUMPRODUCT(--isnumber(search(split(B2, ",", true, true), A2)))=counta(split(B2, ",", true, true))
'full word search
=SUMPRODUCT(--isnumber(search(text(split(B2, ",", true, true), " @ "), text(A2, " @ "))))=counta(split(B2, ",", true, true))
另请参阅:
=AND(ARRAYFORMULA(REGEXMATCH(A1,"(?i)"&SPLIT(B1,",")&"( |$)")))
(?i)
- 不区分大小写
( |$)
- space 或文本结尾,仅匹配整个单词。
单元格 C1 的 ArrayFormula 变体:
=ArrayFormula(TRANSPOSE(NOT(REGEXMATCH(QUERY(TRANSPOSE(filter(REGEXMATCH(A:A,"(?i)"&SPLIT(B:B,",")&"( |$)"),A:A<>"")),,10^99),"FALSE"))))
我有一个 sheet 包含以下数据:
| Text | Value | Value | Value |
|:----------------------------------------|:---------|:---------|:---------|
|Jax and Jax friend Kung Lao fight Raiden | jax | kung lao | raiden |
|Jax and Jax friend Kung Lao fight Raiden | kitana | kung lao | raiden |
以及以下公式:
=SUMPRODUCT( -- ISNUMBER(SEARCH(B1:D1;A1)))=COUNTA(B1:D1)
=SUMPRODUCT( -- ISNUMBER(SEARCH(B2:D2;A2)))=COUNTA(B2:D2)
哪个returns:
TRUE
FALSE
这按预期工作。我得到 TRUE 的所有值都在文本单元格中找到,如果缺少一个或全部,则 FALSE。
现在,我想修改为只在一个逗号分隔的单元格中搜索,而不是在多个单元格中搜索。像这样:
| Text | Values | Formula |
|:----------------------------------------|:-----------------------|:--------|
|Jax and Jax friend Kung Lao fight Raiden | jax,kung lao,raiden | TRUE |
|Jax and Jax friend Kung Lao fight Raiden | kitana,kung lao,raiden | FALSE |
我试过 =SUMPRODUCT( -- ISNUMBER(SEARCH({B2};A2)))=COUNTA({B2})
但它不起作用。
尝试拆分以逗号分隔的列表并像使用单元格区域一样使用拆分数组。
=SUMPRODUCT(--isnumber(search(split(B2, ",", true, true), A2)))=counta(split(B2, ",", true, true))
'full word search
=SUMPRODUCT(--isnumber(search(text(split(B2, ",", true, true), " @ "), text(A2, " @ "))))=counta(split(B2, ",", true, true))
另请参阅:
=AND(ARRAYFORMULA(REGEXMATCH(A1,"(?i)"&SPLIT(B1,",")&"( |$)")))
(?i)
- 不区分大小写( |$)
- space 或文本结尾,仅匹配整个单词。
单元格 C1 的 ArrayFormula 变体:
=ArrayFormula(TRANSPOSE(NOT(REGEXMATCH(QUERY(TRANSPOSE(filter(REGEXMATCH(A:A,"(?i)"&SPLIT(B:B,",")&"( |$)"),A:A<>"")),,10^99),"FALSE"))))