Google sheets 如果单元格包含某个范围内的某个字符串,则高亮显示该单元格

Google sheets 如果单元格包含某个范围内的某个字符串,则高亮显示该单元格,google-sheets,Google Sheets,使用条件格式,我想知道是否可以执行以下操作: 我有一张表,bad_data,其中的B、F和K列包含坏数据。每个单元格都有一个长度为6的字符串(尽管我认为在这种情况下它并不重要)。列B、F和K都有不同数量的行,随着时间的推移,我可能会添加到每个行中 我还有另一张工作表(在同一个工作簿中,让我们称之为“记录”),其中我保存了某些事情的记录。在这张表中,有些列可能包含前面提到的坏数据,让我们以M列为例 我很难想出一个公式来突出显示一个单元格,如果它包含列B、F和K中的任何字符串,即:查找单元格范围,查

使用条件格式,我想知道是否可以执行以下操作:

我有一张表,bad_data,其中的B、F和K列包含坏数据。每个单元格都有一个长度为6的字符串(尽管我认为在这种情况下它并不重要)。列B、F和K都有不同数量的行,随着时间的推移,我可能会添加到每个行中

我还有另一张工作表(在同一个工作簿中,让我们称之为“记录”),其中我保存了某些事情的记录。在这张表中,有些列可能包含前面提到的坏数据,让我们以M列为例

我很难想出一个公式来突出显示一个单元格,如果它包含列B、F和K中的任何字符串,即:查找单元格范围,查找单元格范围内的所有值

我已经想出了一些方法来突出显示一个单元格,它们是相同的,例如:如果M10=123456和B=123456,但是我还需要突出显示如果M10=“1234567891011213”

最后,我想提取匹配字符串并将其写入另一个单元格(可能在工作表中使用regex函数)或突出显示单元格中的匹配字符串,这是否可行

我可以很容易地想出用python、perl、bash等实现这一点的方法……但我认为对于不懂代码的用户来说,在电子表格中维护会更容易


也许我想得太多了,但我被难住了

您可以将基于自定义公式的条件格式与
regexmatch
一起使用,其中regex由指定的列构建而成。以下是B列的示例:

=regexmatch(M10, "\b(" & join("|", filter($B:$B, len($B:$B))) & ")\b")
filter($B:$B,len($B:$B))
在B列中获取非空单元格。它们作为正则表达式替代项连接在一起,并封装在单词边界中(以防您想要强制执行)

与多个列相同,只需连接连接的结果:

& join("|", filter($B:$B, len($B:$B))) & "|" & join("|", filter($F:$F, len($F:$F))) & "|" & join("|", filter($K:$K, len($K:$K)))
顺便说一下,如果您的字符串确实是像“123456”这样的数字,那么它们应该被格式化为纯文本,以便regexmatch将它们视为字符串

提取匹配字符串并将其写入另一个单元格

可以使用与上面的
regexmatch
参数完全相同的
regexextract
来完成

突出显示单元格中的匹配字符串


不可能。单元格内容存在部分格式,但仅用于手动编辑。它不能由公式或脚本应用。

感谢这一点,我已经成功地使匹配适用于整个列(将M10替换为$M:$M,因此它将检查所有M)。如果$B:$B在另一个工作表(不是工作簿)中,我是否需要使用其他函数?它无法识别我的命名范围或,Sheet1!A:一种格式。另外,我还是有点被regextract搞糊涂了,虽然我知道参数是一样的,但它在哪里输出匹配?在同一间牢房里找到的?我是否必须将公式应用于空列,然后匹配项将生成?无需担心,计算出regextract和reference:)