条件格式优化:仅高亮列中当前单元格前150行及之后的重复项
条件格式优化方案
直接把原条件格式的公式替换为以下自定义公式:
=OR(COUNTIF(INDIRECT("B"&MAX(1,ROW()-150)&":B"&ROW()-1),B1)>0,COUNTIF(INDIRECT("B"&ROW()+1&":B1048576"),B1)>0)
公式说明:
- 前半段负责检查当前单元格往前150行范围内的重复值:
用ROW()获取当前单元格的行号,通过MAX(1,ROW()-150)确保起始行不会小于第1行,动态生成「当前行减150行」到「当前行的上一行」的范围,只要该范围内存在与当前单元格相同的值,就返回真。 - 后半段负责检查当前单元格之后所有行的重复值:
生成「当前行的下一行」到Excel默认最大行(1048576)的范围,判断后续行是否存在重复值。 OR()函数将两个条件组合,满足任意一个条件就触发高亮。
原写法无效的原因:
Excel的单元格范围必须遵循「小行号在前,大行号在后」的规则,输入B1000:B850会被自动修正为B850:B1000,相当于查询了前后大范围的单元格,无法实现仅向前查找150行的需求,必须通过动态生成范围的方式规避这个限制。
内容的提问来源于stack exchange,提问作者smlgbl
相关产品推荐
相关产品推荐

