例如,有没有办法从 A1:A1000 的一系列单元格中进行 REGEXMATCH?
Is there a way to REGEXMATCH from a range of cells from A1:A1000 for example?
基本上,我试图找到一种方法来搜索短语列表和 highlight/extract 或从单独的 column/list 中识别包含短语或单词的任何短语或单元格。
为了说明这一点,我有一个 "search terms" 触发了我的 Google 广告的列表,该列表包含人们在 google 搜索中输入的短语或表达引擎。
我还有一个 "negative keywords" 的列表,当某些单词或短语输入 Google 时,我用它来阻止广告显示。例如,如果我的否定关键字列表中有单词 "nursery",那么如果有人输入短语 "best nursery near me"
,它应该停止展示广告
然后我将这两个列表放在 excel 电子表格中的单独列中,因此一列包含搜索词,另一列包含否定关键字。
我想做的是搜索所有搜索词,如果单元格中的任何单词或短语与否定关键字列表中的短语匹配,则突出显示该单元格。在上面的示例中,包含词组 "best nursery near me" 的单元格将突出显示或提取,因为词组 "nursery" 在否定关键字列表中。
REGEXMATCH in google 工作表确实可以做到这一点,但是,我不知道如何让它 select 多个表达式,它确实允许多个表达式,但只能通过 say (A1 |A2|A3),问题是我有超过 1000 个单元格,所以想要一种方法 select 一次全部,比如 (A1:A1000)
这里是 link 到 Google Sheet,如果可能的话我希望能够在 Excel 中完成。 https://docs.google.com/spreadsheets/d/1yLTswjrpwf2owhX4YxPavUY441WlQsnzv3StoP-ilmc/edit?usp=sharing
=ARRAYFORMULA(IF(REGEXMATCH(A2:A, TEXTJOIN("|", 1, C:C)), A2:A, ))
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(A2:A, TEXTJOIN("|", 1, C:C))))
=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("|^", 1, C:C)), A2:A, )),,999^99))))
=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))))
=ARRAYFORMULA(IF(IF(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99)))<>"",
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))),
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(A2:A,
"^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))))<>"",
IF(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99)))<>"",
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))),
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(A2:A,
"^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99)))),
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IF(REGEXMATCH(A2:A, "\s"), A2:A, ),
TEXTJOiN("|", 1, C:C)), A2:A, )),,999^99)))))
有一种更简单的方法可以做到这一点。不要把事情复杂化。
假设您想从城市列表中搜索匹配项。
- 将您的城市列表放在一个选项卡中。
- 将它们设为小写以便于查找,因为搜索词都是小写的。您可以通过添加新列并使用 LOWER 函数来执行此操作。
- 返回到包含搜索词组列表的单元格。
在任何不碍事的空白单元格中(最上面一行的旁边是个好地方)输入这个公式:
城市列表公式:=TEXTJOIN("|",1,'vlookup city'!B$2:B$477)(如果您的选项卡名为 'vlookup city' 并且您的城市位于该选项卡的 B 列中)
在您的搜索词旁边添加一个新列,或者选择一个现有的列来放置您的 "match found" 信息。
在该新列中,添加此公式(如果您的数据从第 4 行开始并且您将城市列表公式放在单元格 G3 中:)
=REGEXMATCH(A4,G$4)
在您的列表中一直填写公式。您可以 double-click 单元格右下角的蓝色小方块,或 grab-and-drag 一直到列表底部。
Ba-ding!它将在您的搜索短语中的任何位置搜索这些城市名称中的任何一个。
如果搜索短语包含至少一个匹配项,它将 return "True."
然后您可以在您的公式上添加额外的功能,使它成为 return 其他东西。例如:
=IF(REGEXMATCH(A4,G$4), "match found", "no match found")
这是一个超轻量级的解决方案,不会降低您的 sheet 速度,而且易于使用。
enter image description here
https://docs.google.com/spreadsheets/d/1XAIDB98r2CGu7hL3ISirErDPNlgT6lVt-TCG0qI1uTE/edit?usp=sharing
基本上,我试图找到一种方法来搜索短语列表和 highlight/extract 或从单独的 column/list 中识别包含短语或单词的任何短语或单元格。
为了说明这一点,我有一个 "search terms" 触发了我的 Google 广告的列表,该列表包含人们在 google 搜索中输入的短语或表达引擎。
我还有一个 "negative keywords" 的列表,当某些单词或短语输入 Google 时,我用它来阻止广告显示。例如,如果我的否定关键字列表中有单词 "nursery",那么如果有人输入短语 "best nursery near me"
,它应该停止展示广告然后我将这两个列表放在 excel 电子表格中的单独列中,因此一列包含搜索词,另一列包含否定关键字。
我想做的是搜索所有搜索词,如果单元格中的任何单词或短语与否定关键字列表中的短语匹配,则突出显示该单元格。在上面的示例中,包含词组 "best nursery near me" 的单元格将突出显示或提取,因为词组 "nursery" 在否定关键字列表中。
REGEXMATCH in google 工作表确实可以做到这一点,但是,我不知道如何让它 select 多个表达式,它确实允许多个表达式,但只能通过 say (A1 |A2|A3),问题是我有超过 1000 个单元格,所以想要一种方法 select 一次全部,比如 (A1:A1000)
这里是 link 到 Google Sheet,如果可能的话我希望能够在 Excel 中完成。 https://docs.google.com/spreadsheets/d/1yLTswjrpwf2owhX4YxPavUY441WlQsnzv3StoP-ilmc/edit?usp=sharing
=ARRAYFORMULA(IF(REGEXMATCH(A2:A, TEXTJOIN("|", 1, C:C)), A2:A, ))
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(A2:A, TEXTJOIN("|", 1, C:C))))
=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("|^", 1, C:C)), A2:A, )),,999^99))))
=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))))
=ARRAYFORMULA(IF(IF(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99)))<>"",
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))),
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(A2:A,
"^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))))<>"",
IF(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99)))<>"",
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IFERROR(
SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99))),
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(A2:A,
"^"&TEXTJOIN("$|^", 1, C:C)&"$"), A2:A, )),,999^99)))),
TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(REGEXMATCH(IF(REGEXMATCH(A2:A, "\s"), A2:A, ),
TEXTJOiN("|", 1, C:C)), A2:A, )),,999^99)))))
有一种更简单的方法可以做到这一点。不要把事情复杂化。
假设您想从城市列表中搜索匹配项。
- 将您的城市列表放在一个选项卡中。
- 将它们设为小写以便于查找,因为搜索词都是小写的。您可以通过添加新列并使用 LOWER 函数来执行此操作。
- 返回到包含搜索词组列表的单元格。
在任何不碍事的空白单元格中(最上面一行的旁边是个好地方)输入这个公式: 城市列表公式:=TEXTJOIN("|",1,'vlookup city'!B$2:B$477)(如果您的选项卡名为 'vlookup city' 并且您的城市位于该选项卡的 B 列中)
在您的搜索词旁边添加一个新列,或者选择一个现有的列来放置您的 "match found" 信息。
在该新列中,添加此公式(如果您的数据从第 4 行开始并且您将城市列表公式放在单元格 G3 中:) =REGEXMATCH(A4,G$4)
在您的列表中一直填写公式。您可以 double-click 单元格右下角的蓝色小方块,或 grab-and-drag 一直到列表底部。
Ba-ding!它将在您的搜索短语中的任何位置搜索这些城市名称中的任何一个。
如果搜索短语包含至少一个匹配项,它将 return "True."
然后您可以在您的公式上添加额外的功能,使它成为 return 其他东西。例如: =IF(REGEXMATCH(A4,G$4), "match found", "no match found")
这是一个超轻量级的解决方案,不会降低您的 sheet 速度,而且易于使用。
enter image description here
https://docs.google.com/spreadsheets/d/1XAIDB98r2CGu7hL3ISirErDPNlgT6lVt-TCG0qI1uTE/edit?usp=sharing