excelperfect 标签:Excel公式练习 工作表中有3列数字,要求每3个数字中最接近的2个数字的平均值,如下图1所示。 
图1
例如,上图1中工作表第3行的数字10、2、19,最接近的2个数字是10和2,其平均值是(10+2)/2=6。 如何编写公式? 由于只有3个数字,首先想到的就是IF函数了。 很显然,3个数中大小处于中间的数一定是所要求的2个数之一,还有一个数就是与中间数相比,最接近中间数的数。 使用MEDIAN函数求得中间数: MEDIAN(B3:D3) 然后,将3个数依次与中间数比较,除0以外,绝对值最小的数就是另外一个数了。 这样,完整的公式为: =AVERAGE(MEDIAN(B3:D3),IF(MEDIAN(B3:D3)=B3,IF(ABS(B3-C3)<ABS(B3-D3),C3,D3),IF(MEDIAN(B3:D3)=C3,IF(ABS(C3-B3)<ABS(C3-D3),B3,D3),IF(ABS(D3-B3)<ABS(D3-C3),B3,C3)))) 还可以使用MAX/MIN/MEDIAN函数组合公式: =IF(MAX(B3:D3)-MEDIAN(B3:D3)>MEDIAN(B3:D3)-MIN(B3:D3),AVERAGE(MEDIAN(B3:D3),MIN(B3:D3)),AVERAGE(MEDIAN(B3:D3),MAX(B3:D3))) 下面的公式也可以实现且更健壮: =IF(COUNTIF(B7:D7,AVERAGE(B7:D7))=1,'-',IF(COUNTIF(B7:D7,'>'&AVERAGE(B7:D7))=1,(SUM(B7:D7)-MAX(B7:D7))/2,(SUM(B7:D7)-MIN(B7:D7))/2)) 将上面的公式稍微转换一下,得到下面的公式: =(SUM(B3:D3)-CHOOSE(COUNTIF(B3:D3,'>'&AVERAGE(B3:D3)),MAX(B3:D3),MIN(B3:D3)))/2 似乎是在写公式,实际上是在考数学!!! 你还有更简洁的公式吗?欢迎留言。 注:有兴趣的朋友可以在知识星球完美Excel社群下载本文配套示例工作簿。 想学Excel VBA的朋友,快看完美Excel视频号: 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
|