google-sheets - 如果单元格包含某个范围内的字符串之一,则突出显示该单元格

标签 google-sheets

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

我有一个工作表 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/

相关文章:

google-sheets - Google表格查询-两个范围之间的笛卡尔联接

regex - 如何在后续计算中使用数组公式的输出?

google-sheets - 具有 LEN 和更多条件的 COUNTIFS

javascript - 将 google 工作表中的一系列单元格作为 PDF 下载到本地计算机和其他自动化脚本的脚本?

javascript - 将公式添加到带有函数的单元格会出现错误

javascript - 获取不将所有数据输出到 Google 表格

google-sheets - 如何将 ARRAYFORMULA 与 TEXTJOIN 一起使用?

google-sheets - Google 电子表格使用 importxml 获取文本

javascript - 从 google apps 脚本创建 html 页面