使用条件格式我想知道是否可以执行以下操作:
我有一张工作表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等方面做到这一点的方法....但我认为对于那些不熟悉代码的用户来说,维护电子表格会更容易。
也许我在想这个,但我很难过。
答案 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视为字符串。
提取匹配的字符串并将其写入另一个单元格
可以使用regexextract
与regexmatch
完全相同的参数完成。
突出显示单元格中的匹配字符串
不可能。存在单元格内容的部分格式,但仅适用于手动编辑。它不能通过公式或脚本应用。