如何理解Google Sheets中的嵌套ARRAYFORMULA数组公式?
Google Sheets数组公式详细解析
核心待解析公式
=ARRAYFORMULA(COUNTIFS(COUNTIFS(A2:A, A2:A), 1, ROW(A2:A), "<="&ROW(A2:A)))
已理解部分说明
你拆分出的以下公式:
=ARRAYFORMULA(COUNTIFS(ROW(A2:A), "<="&ROW(A2:A)))
作用是对每一行,统计当前行及以上的总行数,返回从1开始的递增序列(例如第2行返回1,第3行返回2,以此类推)。
E列公式的疑问解答
E列使用的公式:
=ARRAYFORMULA(COUNTIFS(A2:A, A2:A))
为何空白单元格计数为0?
COUNTIFS对空白单元格的统计规则分两种情况:
- 真正的空单元格:未输入任何内容(包括没输入
=""),COUNTIFS(A2:A, A2:A)在数组模式下,不会将空单元格作为有效匹配值,所以返回0。 - 输入
=""的单元格:这类单元格内容是空文本,属于有明确内容的单元格,COUNTIFS(A2:A, A2:A)会统计所有内容为空文本的单元格数量,所以你在A6输入=""后,只有该行的计数会变化,其他真正的空单元格依然返回0。
嵌套COUNTIFS公式全解析
我们把公式拆成两层逐个分析:
第一层:内层COUNTIFS(A2:A, A2:A)
这是一个数组公式,对A列每一行的内容,返回该内容在A2:A区域中出现的总次数:
- 若某行内容是
Apple且A列中Apple出现3次,该行返回3; - 真正的空单元格返回0;
- 空文本(输入
="")返回其在A列的出现次数。
第二层:外层COUNTIFS(..., 1, ROW(A2:A), "<="&ROW(A2:A))
外层公式的作用是统计当前行及以上的行中,内容出现次数恰好为1的行数,也就是累计到当前行时,A列中「唯一值(仅出现一次的内容)」的总数。
外层的两个条件:
COUNTIFS(A2:A, A2:A), 1:筛选出A列中内容只出现过一次的行(包括空文本仅出现一次的情况);ROW(A2:A), "<="&ROW(A2:A):限定统计范围为当前行及以上的所有行。
组合后,公式最终效果是:对每一行,计算从A2到当前行范围内,所有仅出现过一次的内容的累计数量。
内容的提问来源于stack exchange,提问作者Aashit Garodia
相关产品推荐
相关产品推荐

