使用条件格式我想知道是否可以执行以下操作:
我有一个工作表 bad_data,其中包含 B、F 和 K 列,其中包含错误数据。每个单元格都有一个长度为 6 的字符串(尽管我认为在本例中这并不重要)。 B、F 和 K 列都有不同数量的行,随着时间的推移,我可能会向每一列添加行数。
我还有另一张表(在同一工作簿中,我们称这张表为“记录”),我在其中保存某些事物的记录。在此表中,有些列可能包含前面提到的不良数据,让我们以 M 列为例。
我很难想出一个公式来突出显示包含 B、F 和 K 列中任何字符串的单元格,即:在一系列单元格中查找一系列单元格中的所有值
我已经能够想出一些方法来突出显示它们相同的单元格,例如:如果 M10 = 123456 且 B= 123456,但我还需要突出显示如果 M10 =“123456,78910,111213”。
最终我想提取匹配的字符串并将其写入另一个单元格(可能使用工作表中的正则表达式函数)或突出显示单元格内的匹配字符串,这可能吗?
我可以很容易地想出在 python、perl、bash 等中执行此操作的方法......但我认为对于不精通代码的用户来说,在电子表格中维护会更容易。
也许是我想多了,但我被难住了。
最佳答案
您可以通过 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)))
顺便说一句,如果您的字符串确实是数字,如“123456”,则应将它们格式化为纯文本,以便正则表达式匹配将它们视为字符串。
extract the matching string and write it to another cell
可以使用 regexextract
来完成,其参数与上面的 regexmatch
完全相同。
highlight the matching string within the cell
不可能。单元格内容存在部分格式,但仅适用于手动编辑。它不能通过公式或脚本应用。
关于google-sheets - 如果单元格包含某个范围内的字符串之一,则突出显示该单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982078/