1. 源数据是A列与B列, 在C列统计A列值相等时,在B列不同取值的个数, 在C1输入如下的公式, 再双击单元格的右下角的小正方形即可
C1结果计算过程:
第一步: (A$1:A$6=A1) 返回一个数组 {TRUE;FALSE;FALSE;TRUE;FALSE;FALSE}, 数组大小跟A$1:A$6相同, 分别比较A$1:A$6各元素与A1是否相等, 相等取TRUE, 不相等为FALSE
第二步:COUNTIFS(A$1:A$6,A$1:A$6,B$1:B$6,B$1:B$6), 返回一个数组{1;1;3;1;3;3}, 相当统计了A,B两取值相等的行数
第三步:{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE}/{1;1;3;1;3;3}, 得到两个数组各元素对应相除后的数组:{1;0;0;1;0;0}, 数组的计算不同跟线性代数的矩阵乘法混淆。
2. 对于上表的数据,如果是要求A列取值相等,B列数据的求合,这个有很多种实现方法
方法1: sumif, sumifs
方法2:sumproduct
这种情况往往用数据透视表更合适
3. vlookup实现返回查找列前面的数据值的方法
利用if函数重新排列两列数据的顺序
if({1,0}, array2, array1)