如果单元格包含范围中的一个字符串,则突出显示该单元格

时间:2016-12-05 19:42:33

标签: google-sheets

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

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

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

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

我已经能够提出突出显示它们相同的单元格的方法,例如:如果M10 = 123456且B = 123456但我还需要突出显示M10 =“123456,78910,111213”。

最终id喜欢提取匹配的字符串并将其写入另一个单元格(可能使用工作表中的正则表达式函数)或突出显示单元格中的匹配字符串,这是否可能?

我可以很容易地想出在python,perl,bash等方面做到这一点的方法....但我认为对于那些不熟悉代码的用户来说,维护电子表格会更容易。

也许我在想这个,但我很难过。

1 个答案:

答案 0 :(得分:1)

您可以使用基于自定义公式的条件格式设置regexmatch,其中正则表达式是由指定的列构建的。以下是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)))

顺便说一句,如果您的字符串确实是数字,如&#34; 123456&#34;,则应将它们格式化为纯文本,以便将regexmatch视为字符串。

  

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

可以使用regexextractregexmatch完全相同的参数完成。

  

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

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