【=IF(H3="","",INDEX(A:A,SMALL(IF($D$3:$F$7=H3,ROW($3:$7),66536),COUNTIF(H$3:H3,H3))))】贵请解释下

上次你给帮的忙,非常感谢,但是公式的含义不太明白,能抽点空给解释一下不,其中“66536”是啥意思!这公式你又是如何运用自如!万分感谢!... 上次你给帮的忙,非常感谢,但是公式的含义不太明白,能抽点空给解释一下不,其中“66536”是啥意思!这公式你又是如何运用自如!万分感谢! 展开
 我来答
万年金刚钻
推荐于2016-06-03 · TA获得超过1.6万个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:3515万
展开全部

66536可能是手误了,应该是65536,也就是2003版Excel的最后一行的行号。具体用在哪里已经忘了,不过就公式本身而言可以试着解释下:

=IF(H3="","",INDEX(A:A,SMALL(IF($D$3:$F$7=H3,ROW($3:$7),66536),COUNTIF(H$3:H3,H3))))

  1. 看上去似乎公式应该位于第3行,以本行的H列的值作为参照值,IF函数保证了当H3是空白时,公式所在位置也是空白,主要焦点着重于H3有数据的时候,也就是IF函数在H3有数据的时候,返回的第三个参数:

  2. INDEX(A:A,SMALL(IF($D$3:$F$7=H3,ROW($3:$7),66536),COUNTIF(H$3:H3,H3)))

    Index函数表示到A列去取值,所取的值的行号由其第二个参数决定:

  3. SMALL(IF($D$3:$F$7=H3,ROW($3:$7),66536),COUNTIF(H$3:H3,H3))

    Small函数在一个序列的数字中,取出第N小的数值,这里分成两部分说明:

    a)IF($D$3:$F$7=H3,ROW($3:$7),65536)

    (注:整个公式应该要求的是数组公式的输入方式,主要作用就在这里的IF函数,普通输入方式下IF函数只执行一次,数组公式输入的情况下,原本是一个变量的位置,如果现在是数组了,就会把数组中的所有内容逐次代入从而执行多次)

    一个IF函数来判断一个固定区域$D$3:$F$7中的每个单元格的值是否与H3相同,

    相同-->就把这个单元格所在的行号返回;

    不同-->把最大行号返回

    这样在数组公式的情况下,这个IF公式就返回了这样一个序列,,这个序列中要么是【在固定区域$D$3:$F$7中的<与本行H3相同值的>单元格】的行号,要么就是65536

    b)COUNTIF(H$3:H3,H3)

    统计出本行的这个H3的值,从第3行开始到本行出现的次数(这里有个小技巧就是,适当地使用绝对引用和相对引用,使得当公式下拉后,countif统计的范围始终是第3行至本行)

    a+b)作为Small的两个部分,前一部分得到了一个包含需要的行号和不需要的65536,而后一部分则规定了取第几小的哪一个数字(行号),结合起来后就返回了交给Index的【当前行应该在<A:A中取哪一个>单元格】的行号

以上,请对照你的数据和数据摆放方式来鉴定和理解。若有不明白的,请(指定段落编号和章节号)进行追问

来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式