EXCEL中countif在数组中的应用

=INDEX(B:B,MIN(IF(COUNTIF($D$2:D2,$B$2:$B$42),4^8,ROW($2:$42))))&""
高人帮忙给解释下这个公式的含义。
此公式是在D列中的。
1、countif这个不知道里面是怎么个比较关系
2、4^8,我查到有人说是超出EXCEL单元格数,可是它是在if里,应该是个值啊,和单元格有什么关系
3、顺道再解释下min和index和后面&""干嘛用的
基本上就是把公式完整解释下了。
辛苦了,所以把金币奉上!

因为是数组,先得出一些列的值,最后在MIN来计算。
1. countif这个不知道里面是怎么个比较关系------计算B2到B42中,每个值出现在$D$2:D2中出现的次数(因为后面的D2是相对的,所以公式复制到下一列是会变为$D$2:D3)。
2、4^8-----4的8次方
3:以上第1个值如果为假(即0,B2...没有在$D$2:D2中出现), 则返回行号(ROW($2:$42)),如果出现,则返回4的8次方。以此按列类推。
4. 以上第3条中按照数组形式返回的一系列值(有41个值),取其中的最小值,再按照INDEX函数,返回以该最小值为行数,在B列的一个值。
5. &""----B列的值应该是数值,&""将它转化为文本格式。

公式说明:这个公式应该是一直填充复制到底42行,结果则如下(如果不是,这只是计算到公式所在的行。题目中的公式只计算到了第2行)
如果B2=D2,B3=D3,.....B42=D42,B列与D列完全相同 (即B2出现在D2:D2中,B3出现在D2:D3中,....),这时返回B65536的文本值,应该是空白。
如果有B列与D列有任何一行不相同,则返回该行中B列的文本值(按顺序第一次出现不同值的行)。追问

解释得不到位,但是我明白了你的意思了,分数给你了。这个公式真是锻炼逻辑啊,很有意思,呵呵。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-25
4^8 是4的8次方 相当于4右上角一个小8
countif 是在 $B$2:$B$42 取值不出错的话,就算出4^8,否则取当前行号
MIN 是求最小值
整个公式是找出最小值所在的位置的一个值。

公式好像有问题!追问

公式没有问题。你可以研究下,挺有意思。总是想不出把公式分解后,具体化到数组后是以什么形式展开的。