使用VBA或Google Apps脚本识别多次出现string的电子表格单元格

我想突出重复单词的单元格。 例如,

A1:镇上最好的夹克。
A2:镇上最好的夹克。
A3:镇上最好的夹克。

我想突出A2和A3,因为“in”和“best”这两个词在他们中出现过多次。 我如何使用VBA来做到这一点? Google Apps脚本解决scheme也可以。

没有脚本:条件格式

如果一个人认为单词之间只用空格隔开的位置,并且string中任何地方的重复都是可以接受的(即“哭泣宝贝的哭泣”也被视为重复),那么不需要脚本:Google表格中的条件格式可以做这个工作 使用自定义公式

=len(join(" ", unique(transpose(split(A1, " "))))) < len(A1) 

A1应该被格式化的范围的左上angularreplace。

这个想法是用空格分割string,挑选独特的单词,并把它们放在一起。 如果结果比原来短,则会有一些重复。

Google Apps脚本解决scheme

Google Apps脚本可以使用任何JavaScript正则expression式方法,允许更广泛的文本处理规则。

版本1: 背靠背的重复 :“在城里最好的游戏”相匹配,但“哭泣宝贝哭”没有。 这是正则expression式

 \b(\w+)\W+\1\b 

版本2: 不受限制的重复 :“在城里最好的游戏”和“哭泣宝贝哭”的比赛。 用正则expression式表示

 \b(\w+)\b.*\b\1\b 

您select的任何正则expression式在下面的脚本中进入revariables,该脚本处理当前活动工作表中的所有值。 它为每个单元格select一个背景,并使用setBackgrounds

 function repeated() { var re = /\b(\w+)\W+\1\b/; var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getDataRange(); var backgrounds = range.getBackgrounds(); var values = range.getValues(); for (var i = 0; i < values.length; i++) { for (var j = 0; j < values[0].length; j++) { backgrounds[i][j] = re.test(values[i][j]) ? "yellow" : "white"; } } range.setBackgrounds(backgrounds); }