Google Spreadsheet:如何统计两个数组的公共数据数量?
在Google Spreadsheet中统计两个数组的公共数据数量
针对你需要统计数组A[1,2,3]和B[3,4,5]公共元素数量(预期结果1)的需求,这里有几种实用的实现方法,根据你的场景选择即可:
方法1:用INTERSECT + COUNTA(最简洁直观)
这是Google Sheets较新版本支持的原生方法,一步到位:
=COUNTA(INTERSECT({1,2,3}, {3,4,5}))
如果你的数组是存储在单元格区域(比如A1:A3是[1,2,3],B1:B3是[3,4,5]),就改成:
=COUNTA(INTERSECT(A1:A3, B1:B3))
原理:INTERSECT函数直接返回两个数组的交集元素(这里就是[3]),COUNTA统计这个交集数组里的非空元素数量,正好得到公共数据的个数。
方法2:SUMPRODUCT + COUNTIF(兼容旧版本)
如果你的Google Sheets版本还没启用INTERSECT,或者需要更通用的兼容写法,用这个组合:
=SUMPRODUCT(--(COUNTIF({3,4,5}, {1,2,3})>0))
单元格区域版本:
=SUMPRODUCT(--(COUNTIF(B1:B3, A1:A3)>0))
原理:
COUNTIF(B1:B3, A1:A3)会逐个检查A中的每个元素在B里出现的次数,返回数组[0,0,1];--把COUNTIF返回的结果转成布尔值对应的数字(0代表不存在,1代表存在);SUMPRODUCT把这些数字求和,最终得到公共元素的数量。
方法3:COUNTUNIQUE + FILTER(处理重复元素场景)
如果你的数组里存在重复值(比如A是[1,3,3],B是[3,3,5]),而你只想统计唯一的公共元素数量(结果还是1),用这个方法:
=COUNTUNIQUE(FILTER({1,2,3}, COUNTIF({3,4,5}, {1,2,3})>0))
单元格区域版本:
=COUNTUNIQUE(FILTER(A1:A3, COUNTIF(B1:B3, A1:A3)>0))
原理:FILTER先筛选出A中在B里存在的元素,COUNTUNIQUE统计这些元素里的唯一值数量,避免重复元素影响统计结果。
内容的提问来源于stack exchange,提问作者Vajdy
相关产品推荐
相关产品推荐

