总结
数组公式和普通公式,差别在于思维方式的不同! 要用看数组的方式看待数据
1 案例1: 查找行里最后1个数值
1.1 方法1:用数组公式写
- 着眼于,数组
脑中里要把这些一行数看成一个个数组
- 红框,紫框里都是1个1个数组
思路如下
- 要处理的数据,是哪几个数组
- 数组内是什么样的
- 如何取到这个数组里符合要求的哪个数?
={MAX(IF(C7:N7="",0,1)*C$6:N$6)}
={INDEX($21:$21,MAX(IF(C22:N22="",0,1)*COLUMN(C21:N21)))}
={INDEX($21:$21,MAX(IF(C22:N22<>"",1*COLUMN(C$21:N$21),0)))}
1.2 方法2:用普通公式写
- 着眼于,单元格,要找出表里 range里的那个单元格
- 用公式怎么查到符合条件的单元格
=LOOKUP(9999,C7:N7,C$6:N$6)
2 案例2 判断1行里多个数是否相等
2.1 方法1: 数组公式
- 把要查找的这一部分行看成1个数组
- 先考虑如何判断,所有数都相等 B6:F6-B6 如果全是 0,0,0 就是
- 但还可能有空值,需要先判断空值
- 两个条件交叉起来
- 下面这个公式是网上找的例子,技巧很高,我还需要学习
脑中里要把这些一行数看成一个个数组
- 红框,紫框里都是1个1个数组
{IF(OR((B6:F6<>"")*(B6:F6-B6)),FALSE,TRUE)}
2.2 方法2:普通单元格考虑,公式
- 考虑的是单元格
- 用如下的思路考虑
IF(MAX(B7:F7)=MIN(B7:F7),TRUE,FALSE)
if(countif()=counta(),true,false) 也是一样的
3 案例3
- 这个用数组公式更好做
脑中里要把这些一行数看成一个个数组
- 红框,紫框里都是1个1个数组
3.1 方法1 数组公式
我写的数组公式
SUM(IFERROR(0+LEFT($B$2:$F$5,IFERROR(FIND(H$1,$B$2:$F$5)-2,0)),0))
别人写的,说实话没懂,但也是对的。。。
SUM(IFERROR(--SUBSTITUTE(LEFT($B$2:$F$5,FIND("-",$B$2:$F$5)-1),"/"&H1,""),0))
3.2 方法2:用普通公式做?
暂时没想到