Excel如何检查整列(除表头)仅含指定值并返回TRUE/FALSE
解决方案
完全不需要使用宏或VBA,仅用Excel内置函数即可实现需求,以下是两种不同兼容性的实现方案:
方案1:支持动态数组的Excel版本(Excel 365/2021及以后)
直接使用AND函数判断所有目标单元格是否全部满足等于1的条件:
=AND(B2:B1048576=1)
说明:
- 范围
B2:B1048576是B列除开第一行表头的所有单元格(Excel单张工作表最大行数为1048576) - 只要B2及以下任意单元格的值不等于1(包括空白、文本、其他数值),公式就会自动返回
FALSE,全部为1时返回TRUE
方案2:兼容所有Excel旧版本(2019及更早)
使用SUMPRODUCT函数做统计判断,无需按数组公式特殊回车,兼容性更强:
=SUMPRODUCT(--(B2:B1048576<>1))=0
说明:
--(B2:B1048576<>1)会把所有不等于1的单元格标记为1,等于1的标记为0- 只要求和结果等于0,就说明所有单元格都等于1,返回
TRUE,否则返回FALSE
小提示:如果你的B列实际有效数据仅到12345行,也可以把公式里的范围替换为
B2:B12345,减少不必要的运算,提升表格响应速度。
原公式失效原因
你之前使用的@是Excel的隐式交集运算符,作用是从数组中返回和公式所在行匹配的单个值,所以公式只会判断和A1同位置的B1单元格,自然无法校验整列内容。
内容的提问来源于stack exchange,提问作者NubCake
相关产品推荐
相关产品推荐

