Google Sheets跨工作簿统计唯一序列号:公式返回1异常求助
解决跨工作簿统计唯一序列号数量的问题
问题原因分析
你当前的公式错误在于在QUERY语句中使用了unique(Col12),这会让QUERY直接返回去重后的序列号列表,外层的COUNTUNIQUE实际是对这个已去重的列表再统计唯一值——如果列表格式返回的是单行数组(或因列对应错误导致筛选结果只有1个值),就会始终返回1。此外需要确认:
- IMPORTRANGE的列映射是否正确:你提到工作簿A的Col1是客户密钥、Col12是序列号,但公式中引用的是
Bajada Transacciones!$J:$U,意味着J列对应QUERY的Col1,U列对应QUERY的Col12,需确保这和工作簿A的实际列位置一致。 - 是否已完成IMPORTRANGE的授权:首次使用时必须点击允许访问目标工作簿数据,否则公式无法正确获取数据。
修正后的公式方案
方案1:使用FILTER+COUNTUNIQUE(更直观)
直接筛选出对应客户的所有序列号,再统计唯一值数量:
=COUNTUNIQUE(FILTER(IMPORTRANGE("url from workbook A";"Bajada Transacciones!$U:$U");IMPORTRANGE("url from workbook A";"Bajada Transacciones!$J:$J")=A2))
- 说明:
IMPORTRANGE("url from workbook A";"Bajada Transacciones!$J:$J")是工作簿A的客户密钥列(对应QUERY的Col1),$U:$U是序列号列(对应QUERY的Col12),可根据实际列位置调整。
方案2:修正QUERY+COUNTUNIQUE的逻辑
去掉QUERY中的unique,先筛选出所有匹配的序列号,再用COUNTUNIQUE统计唯一值:
=COUNTUNIQUE(QUERY(IMPORTRANGE("url from workbook A";"Bajada Transacciones!$J:$U");"select Col12 where Col1 = '"&A2&"'";0))
- 说明:最后一个参数
0表示忽略表头(如果目标区域有表头的话),如果没有表头可省略或改为1。
额外注意事项
- 如果工作簿A的客户密钥是数值类型,公式中不需要加单引号,可改为:
"select Col12 where Col1 = "&A2 - 若数据量较大,可考虑将IMPORTRANGE的结果先存到一个辅助列,再基于辅助列统计,提升公式运行效率。
内容的提问来源于stack exchange,提问作者Diego Recondo
相关产品推荐
相关产品推荐

