ADDRESS函数使用异常:COUNTA跨工作表统计结果不符咨询
为什么两个COUNTA公式结果不一致?
这个问题我太熟悉了!核心原因在于ADDRESS函数返回的是文本格式的单元格地址,而COUNTA对文本字符串和实际单元格区域的处理逻辑完全不同,咱们一步步拆解来看:
先看你的第一个公式:
=COUNTA(ADDRESS(3,5,4,1,"Sheet1") & ":" & ADDRESS(4,12,4,1))ADDRESS函数的作用是把行号列号转换成文本格式的地址,比如ADDRESS(3,5,4,1,"Sheet1")会返回字符串"Sheet1!E3",第二个ADDRESS返回"Sheet1!L4",两者拼接后得到的是完整的文本字符串"Sheet1!E3:L4"。COUNTA函数遇到这个文本时,不会自动把它解析成单元格区域,而是把这个字符串本身当成一个非空值来统计——毕竟这个字符串本身不是空的,所以结果自然是1。
再看第二个公式:
=COUNTA(Sheet1!E3:L4)- 这里你直接写的是单元格区域的引用,
COUNTA会遍历Sheet1!E3:L4里的每一个单元格,逐个判断是否非空。因为你说这个区域全是空白单元格,所以统计结果就是0,这才是符合预期的正确计算。
- 这里你直接写的是单元格区域的引用,
如果你的实际需求是要通过动态生成的地址字符串来统计非空单元格数量,只需要加一个INDIRECT函数,把文本格式的地址转换成真正的单元格引用就行,修改后的公式如下:
=COUNTA(INDIRECT(ADDRESS(3,5,4,1,"Sheet1") & ":" & ADDRESS(4,12,4,1)))
这样INDIRECT会把拼接出来的文本地址转换成实际的单元格区域,COUNTA就能准确统计区域里的非空单元格数量了。
内容的提问来源于stack exchange,提问作者schuler_jim
相关产品推荐
相关产品推荐

