Excel按条件统计唯一地址数:动态更新需求及实现方法
实现Tab2第三列自动统计对应组唯一地址数并适配新增行
完全可行,核心是让公式引用能自动适配新增行,同时准确统计唯一地址数,分两种常用场景给方案:
场景1:Excel 365/2021(支持动态数组)
先明确数据结构假设(可按实际调整):
- Tab1:A列=唯一ID,B列=组标识,C列=地址
- Tab2:A列手动输入唯一ID,B列用
XLOOKUP拉取对应组标识(比如=XLOOKUP(A2, Tab1!A:A, Tab1!B:B)),C列要统计该组的唯一地址数
在Tab2的C2单元格输入以下公式,回车后会自动填充到下方所有非空行,新增行时公式自动生效:
=BYROW(A2:A, LAMBDA(id, IF(id="", "", LET(group, XLOOKUP(id, Tab1!A:A, Tab1!B:B), COUNTA(UNIQUE(FILTER(Tab1!C:C, Tab1!B:B=group)))))))
公式拆解:
BYROW(A2:A, LAMBDA(id, ...)):遍历Tab2 A列从A2开始的每一行IF(id="", "", ...):空ID行返回空值,避免出现错误提示LET(group, ...):先获取当前ID对应的组标识,简化后续计算逻辑FILTER+UNIQUE:筛选出该组的所有地址并去重COUNTA:统计去重后的有效地址数量
场景2:旧版Excel(无动态数组支持)
依靠Excel表结构实现公式自动扩展:
- 选中Tab2的已有数据区域(包含表头),按
Ctrl+T创建表,勾选「表包含标题」选项 - 在第三列(比如表头设为「唯一地址数」)的第二行输入数组公式,按
Ctrl+Shift+Enter确认生效:
=IF([@唯一ID]="", "", COUNTA(UNIQUE(IF(Tab1!$B:$B=[@组标识], Tab1!$C:$C, ""))))
说明:
- 转为Excel表后,新增行时公式会自动复制到新行,无需手动下拉
[@唯一ID]、[@组标识]是表的结构化引用,自动对应当前行的列值- 数组公式通过
IF筛选对应组的地址,再完成去重和数量统计
额外提示
- 如果Tab1的原始数据也会新增行,建议把Tab1也转成Excel表,公式里的引用替换为结构化引用(比如
Tab1[组标识]替代Tab1!B:B),稳定性更强 - 若地址列存在空白值,
COUNTA会忽略空白;如果需要把空白算作一个唯一值,将COUNTA(UNIQUE(...))替换为ROWS(UNIQUE(...))即可
内容的提问来源于stack exchange,提问作者TomatoOverflow
相关产品推荐
相关产品推荐

