Google Sheets中无需拆分字符串检测重复字符的实现方法
Google Sheets:验证字符串是否存在重复字母(不拆分字符串)
需求说明
需要验证字符串中的字母是否唯一:当字符串中有一个或多个字母出现两次及以上时,返回TRUE(或"Match");所有字母都唯一时返回FALSE(或"No Match")。具体限制:
- 匹配不区分大小写
- 禁止拆分字符串,避免大量计算(列表较长)
- 不能使用Lambda及其辅助函数
- 可直接返回
TRUE/FALSE替代"Match"/"No Match"
输入输出示例
| 输入 | 期望输出 | 重复字母(仅作演示) |
|---|---|---|
| Outdoors | Match | o |
| dog | No Match | |
| step | No Match | |
| bee | Match | e |
| Chessboard | Match | s |
| Cookbooks | Match | o, k |
更多验证示例
| 输入 | 期望输出 |
|---|---|
| Professionally | Match |
| Attractiveness | Match |
| Uncontrollably | Match |
| disreputably | No Match |
| Recommendation | Match |
| Interrogations | Match |
| Aggressiveness | Match |
| doublethinks | No Match |
尝试过的方法
- 拆分字符串后,用字符串长度除以唯一字母的
COUNTA值判断,但拆分操作对长列表效率低下 - 尝试用正则检测指定重复字母(如
=REGEXEXTRACT(A1,"o{2}?")),但无法通用匹配任意重复字母
解决方案
使用带反向引用的正则表达式配合REGEXMATCH函数,直接判断是否存在重复字母,完全符合需求:
=REGEXMATCH(A1, "(?i)(.).*\1")
正则规则解释
(?i):开启不区分大小写模式,确保大小写字母视为同一字符(如"O"和"o"会被判定为重复)(.):捕获任意单个字母字符.*:匹配两个重复字母之间的任意内容\1:引用之前捕获的字符,确保找到与第一个捕获字符相同的重复项
效果验证
- 输入
Outdoors:返回TRUE(对应"Match"),存在重复的"o" - 输入
dog:返回FALSE(对应"No Match"),所有字母唯一 - 输入
Cookbooks:返回TRUE,存在重复的"o"和"k"
该方法无需拆分字符串,计算效率高,适配长列表,且未使用Lambda相关函数,完全满足所有限制条件。
内容的提问来源于stack exchange,提问作者Osm
相关产品推荐
相关产品推荐

