如何统计各区域区间内关联的唯一地理位置数量?
解决思路与可行方案
COUNTIFS搞不定很正常——它没法处理单元格里的逗号分隔多值,也做不到同一地理位置跨区间的分别计数,以及同区间多区号的去重统计。下面给两种实用方案:
方案一:Power Query(推荐,适合大量数据)
这是最省心的方法,步骤清晰不易出错:
- 拆分区号为单独行:选中GEOLOCATIONS表,进入「数据」选项卡→「从表格/区域」导入Power Query。选中「逗号分隔区号列表」列,点击「转换」→「拆分列」→「按分隔符」,选逗号,然后选「拆分为行」。这样每个区号对应一条地理位置记录。
- 匹配区域区间:导入AREAS表到Power Query,先把「区域区间」拆成起始和结束数值(比如
010-020拆成010和020),再添加自定义列判断当前区号是否在区间内:=if [区号] >= [起始区间] and [区号] <= [结束区间] then [区域名称] else null。 - 去重:选中「地理位置名称」和「区域名称」列,点击「转换」→「删除重复项」,确保同一位置在同一区间只留一条记录。
- 分组统计:按「区域名称」分组,统计「地理位置名称」的非重复计数,最后把结果加载回AREAS表的「待统计位置数」列。
方案二:Excel 365数组公式(适合小数据量)
如果用的是365版本,可直接在AREAS表的「待统计位置数」单元格写数组公式(365自动识别,无需按组合键):
=LET( 区间拆分, TEXTSPLIT([@区域区间], "-"), 起始值, VALUE(INDEX(区间拆分,1)), 结束值, VALUE(INDEX(区间拆分,2)), 有效位置, UNIQUE(FILTER( GEOLOCATIONS[地理位置名称], BYROW(GEOLOCATIONS[逗号分隔区号列表], LAMBDA(区号串, OR(VALUE(TEXTSPLIT(区号串, ","))>=起始值, VALUE(TEXTSPLIT(区号串, ","))<=结束值)) ) )), COUNTA(有效位置) )
注:如果区域区间是单个值(非范围),把公式里的起始值和结束值改成同一个值即可。
内容的提问来源于stack exchange,提问作者denlau
相关产品推荐
相关产品推荐

