Google Sheets单元格重复数字布尔判断的精简公式方案
Google Sheets 精简实现重复数字判断的TRUE/FALSE输出
示例数据(A列内容)
11 11 11 5 6 5 5 5 6 6 5 11 11 11 11 6 7 8 3 3 2 3
预期结果
| 原内容 | 预期结果 |
|---|---|
| 11 | TRUE |
| 空单元格 | FALSE |
| 11 11 | TRUE |
| 5 6 | FALSE |
| 5 5 | TRUE |
| 5 6 6 5 | TRUE |
| 11 11 11 11 | TRUE |
| 空单元格 | FALSE |
| 6 7 8 | FALSE |
| 3 | TRUE |
| 3 2 3 | TRUE |
判断逻辑
- 返回FALSE的场景:
- 单元格为空
- 单元格内所有数字无重复
- 返回TRUE的场景:
- 单元格仅含单个数字
- 单元格内存在至少两个重复数字(与顺序无关)
补充说明
- 数字以空格分隔
- 数字范围为1至80
- 每个单元格最多包含40个数字,最少1个或为空
已尝试的方法
- 用
SUM(SPLIT(...))求和后除以数字个数,判断结果是否为整数——但对3 2 3、6 7 8这类场景无效 - 用SPLIT结合QUERY、LET等函数处理——公式过于冗长,不够精简
精简解决方案
方案1:利用UNIQUE函数对比数量
公式(以A1单元格为例):
=IF(A1="",FALSE,OR(COUNTA(SPLIT(A1," "))=1,COUNTA(SPLIT(A1," "))>COUNTA(UNIQUE(SPLIT(A1," ")))))
逻辑说明:
- 先判断单元格是否为空,为空直接返回FALSE
- 若单元格只有1个数字,返回TRUE
- 拆分数字后,对比原数字数量和去重后的数量,若原数量更大(说明有重复),返回TRUE;否则返回FALSE
方案2:正则表达式方案
公式(以A1单元格为例):
=IF(A1="",FALSE,OR(REGEXMATCH(A1,"^\d+$"),REGEXMATCH(A1,"(\b\d+\b).*\1")))
逻辑说明:
- 空单元格返回FALSE
^\d+$匹配单个数字的情况,返回TRUE(\b\d+\b).*\1匹配任意重复出现的完整数字(避免部分匹配,比如1和11不会被误判),存在重复则返回TRUE- 其余情况(多个不重复数字)返回FALSE
内容的提问来源于stack exchange,提问作者ulrichson
相关产品推荐
相关产品推荐

