请EXCEL高手详解此函数,谢谢
没有看到具体文档,仅作以下揣测。
为更方便理解,我们将数据区域变小一点来看。
{=IF(MIN(ABS(C3-IF(G$3:G$10=D3,F$3:F$10,2^2)))<=0.0069444444,"正常","异常")}
首先,这是一个数组公式,作用是通过搭建数组可进行批量数据的处理。
里面主要用到了,if,min,abs三个函数组合。
个人觉得重点在这个公式的写法里:IF(G$3:G$10=D3,F$3:F$10,2^2)
用D3的值为条件去比对数据区域G$3:G$10里面的值;
若G$3:G$10区域中有值与D3相等,(我们假设G3=D3)那么就会生成这样一个数组:{true,false,false,false,false,false,false,false}
上面的公式变成:
1、IF({true,false,false,false,false,false,false,false},F$3:F$10,2^2)
2^2表示2的2次方=4,同理,你原来的8^8就表示8的8次方。
2、IF({true,false,false,false,false,false,false,false},F$3:F$10,4)运算后得到这样一个数组:{F3的值,4,4,4,4,4,4,4}
为何会得到这样一个数组呢?我的理解就是利用搭建数组将此例做了8次IF函数的条件判断,
当IF中逻辑值为true时,取的是F3到F10中对应行的值(也可以看做一个数组,本例中因第数组中第一个值为真),所以就是F3了。逻辑值为假时,直接取2^2的值。
至此,剩下的东西就更容易理解了。
用C3依次去减数组{F3的值,4,4,4,4,4,4,4},再取绝对值后(ABS函数),提取出结果数组中的最小值(MIN函数)再与0.0069444444比较,若逻辑值为真,则显示“正常”,为假则显示“异常”
本人愚钝,用了近半个小时描述、抓图。不知,你明白了没?呵呵……
G$3:G$1002是一个区域,从G3到G1002的单元格,F$3:F$1002也一样.
IF(G$3:G$1002=D3,F$3:F$1002,8^8) IF是条件函数,判断第一个逗号前的条件是否成立,成立即取第一个逗号与第二个逗号间的值,F$3:F$1002,不成立即取第二个逗号后面的值8^8.由于这是个数组公式,它会将G$3:G$1002区域的每一个单元格和它对应行第D列的数据对比,相等即取同一行第F列的值,不相等则为8^8即8的8次方,^是乘幂的意思.
C3-IF(G$3:G$1002=D3,F$3:F$1002,8^8)就不用说了,用C列的数值减去上面取得的值.
ABS(C3-IF(G$3:G$1002=D3,F$3:F$1002,8^8)) ABS是取绝对值,避免出现负数.
MIN(ABS(C3-IF(G$3:G$1002=D3,F$3:F$1002,8^8)) MIN是取最小值,即取上一步计算的从第3行到第1002行的上一步的差的最小值.
IF(MIN(ABS(C3-IF(G$3:G$1002=D3,F$3:F$1002,8^8)))<=0.0069444444,"正常","异常") 又是一个条件函数,将上一步取得的最小值与0.0069444444对比,小于等于则最后的值为正常,大于则为异常.