比较两个单元格并将HTML标记添加到匹配值

时间:2019-06-13 19:12:48

标签: regex google-sheets google-sheets-formula array-formulas google-sheets-query

我有两列,一列包含一组中的所有项目,另一列包含当前具有的项目。我想比较一下,如果匹配的话,要为匹配的结果添加一些文字。 Here is an example

因此在该示例中,A列是设置数字,B列是设置值,C列是我当前拥有的值,D列是预期的结果。

所以我想将B与C进行比较,如果有匹配的名称,那么我希望B将此<img src='tick.svg'>附加到匹配的名称之后。

通过以下功能获得一些帮助:

=ARRAYFORMULA(TEXTJOIN("<br />&#10 ", 1, REGEXREPLACE(TRIM(IFERROR(SPLIT(B2, "<br />&#10"))), 
 TEXTJOIN("|", 1, IF(REGEXMATCH(TRIM(IFERROR(SPLIT(B2, "<br />&#10"))), 
 TEXTJOIN("|", 1, TRIM(IFERROR(SPLIT(C2, "<br>"))))), 
 TRIM(IFERROR(SPLIT(B2, "<br />&#10"))), )), TRIM(IFERROR(SPLIT(B2, "<br />&#10")))&" <img src='tick.svg'>")))

但是,当我在单元格中有'<br>'标记或'<br />&#10'时,它将跳过或替换某些单词(例如 row 2 col E )。另外,我目前必须将其拖动到下一个单元格,将其自动应用于每行非常方便,

注意:它链接到Web应用程序中的此question,此问题已解决,但范围更大。

1 个答案:

答案 0 :(得分:0)

粘贴在 D2 单元格中:

=ARRAYFORMULA(SUBSTITUTE(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(SUBSTITUTE(IF(ISNUMBER(
 QUERY(QUERY(IFERROR(SPLIT(IF(IF(REGEXMATCH(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(
 TRANSPOSE(IFERROR(IF(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&
 TRIM(IFERROR(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), )))
 ,,999^99)),,999^99), "♠"))),SUBSTITUTE(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(IF(
 SPLIT(C2:C, ",")<>"", A2:A&"♦"&TRIM(IFERROR(SPLIT(C2:C, ","))), ))),,999^99)),,999^99))
 , " ", "|")), TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(IF(
 SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&TRIM(IFERROR(SPLIT(
 SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), ))),,999^99)),,999^99),
 "♠")))&" - CHECK", )<>"", IF(REGEXMATCH(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IFERROR(IF(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&TRIM(IFERROR(
 SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), )))
 ,,999^99)),,999^99), "♠"))),SUBSTITUTE(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(IF(
 SPLIT(C2:C, ",")<>"", A2:A&"♦"&TRIM(IFERROR(SPLIT(C2:C, ","))), ))),,999^99)),,999^99)),
 " ", "|")), TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(IF(
 SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&TRIM(IFERROR(SPLIT(
 SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), ))),,999^99)),,999^99), 
 "♠")))&" - CHECK", ), TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(IF(
 SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&TRIM(IFERROR(SPLIT(
 SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), ))),,999^99)),,999^99),
 "♠")))), "♦")), "select count(Col1) where Col1 is not null group by Col1 pivot Col2", 0), 
 "offset 1", 0)), INDEX(QUERY(IFERROR(SPLIT(IF(IF(REGEXMATCH(TRIM(TRANSPOSE(SPLIT(QUERY(
 TRANSPOSE(QUERY(TRANSPOSE(IFERROR(IF(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", 
 "♠"&A2:A&"♦"&TRIM(IFERROR(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), )))
 ,,999^99)),,999^99), "♠"))),SUBSTITUTE(TRIM(QUERY(TRANSPOSE(QUERY(
 TRANSPOSE(IFERROR(IF(SPLIT(C2:C, ",")<>"", A2:A&"♦"&TRIM(IFERROR(SPLIT(C2:C, ","))), )))
 ,,999^99)),,999^99)), " ", "|")), TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IFERROR(IF(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&TRIM(IFERROR(
 SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), ))),,999^99)),,999^99), "♠")))&
 " <img src='tick.svg'>", )<>"", IF(REGEXMATCH(TRIM(TRANSPOSE(SPLIT(QUERY(
 TRANSPOSE(QUERY(TRANSPOSE(IFERROR(IF(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", 
 "♠"&A2:A&"♦"&TRIM(IFERROR(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), )))
 ,,999^99)),,999^99), "♠"))),SUBSTITUTE(TRIM(QUERY(TRANSPOSE(QUERY(
 TRANSPOSE(IFERROR(IF(SPLIT(C2:C, ",")<>"", A2:A&"♦"&TRIM(IFERROR(SPLIT(C2:C, ","))), )))
 ,,999^99)),,999^99)), " ", "|")), TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IFERROR(IF(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&TRIM(IFERROR(
 SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), ))),,999^99)),,999^99), "♠")))&
 " <img src='tick.svg'>", ), TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(
 TRANSPOSE(IFERROR(IF(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ",")<>"", "♠"&A2:A&"♦"&
 TRIM(IFERROR(SPLIT(SUBSTITUTE(B2:B, " <br />&#10", ","), ","))), )))
 ,,999^99)),,999^99), "♠")))), "♦")), "select count(Col1) where Col1 is not null group by Col1 
 pivot Col2", 0), 1, ), ), " ", "♂")),,999^99))), " ", " <br />&#10 "), "♂", " "))

0