昨晚要照顾某人,呵呵,所以中途跑人了,呵呵...今天补上 楼上版主的公式好像和我昨天的公式类似,似乎不能完成搂住要求。 先把重新领会题意后的答案奉上。并打算配上解说。
2sx7NReP.rar
(5.01 KB, 下载次数: 12)
================================================== 表2 C1单元格公式如下 =IF(ROW()>COUNTIF(Sheet1!$A:$A,Sheet2!$B$2)+1,"",OFFSET(Sheet1!$A$1,INDEX(ROW($1:$100),SMALL(IF(Sheet1!$A$1:$A$100=$B$2,ROW($1:$100),""),ROW()-1))-1,MATCH(Sheet2!C$1,Sheet1!$1:$1,0)-1)) 庖丁解牛:最外层的IF函数根据表1A列CC NO.1 的个数和当前的行进行比较,如果行对应的数据不存在了(行2 对应第一个 CC NO.1,行3对应第二个 CC NO.1,因为特定的CC NO.1的个数是确定有限的,所以当公式所在行超过了一定数后对应的CC NO.1不存在了)就显示空,就是所谓 "". 所以关键公式是IF函数的逻辑否的区域,OFFSET函数。OFFSET函数就是根据特定的条件,把目标单元格用表1 A1的相对偏移来反馈出来。其中列的反馈很简单,就是一个MATCH 函数,用字段进行对齐。 关键中的关键其实就是行偏移,在行偏移中使用了一个非常实用的INDEX,SMALL,IF的组合应用。逻辑表达就是这样,我们不是要反馈行偏移吗?就是最后要反馈一个自然数(根据题意我认为设置最大数是100-1).先保存一下,呵呵 接保存...于是又涉及到怎么分配偏移的问题,根据条件进行分配,先把所有满足条件的偏移都筛选出来,然后根据行号大小进行逐个分配。这个条件是 表1 A列数据等于表2 B2数据,就是CC NO.1的值要相等,满足条件的就把对应的行号提取出来,不满足的就定为""(这里有个背景知识就是""比数字要大),然后用SMALL函数的第二格参数把这些满足条件的行号逐个提取出来,最后减去一个1 就是偏移值了。 这个题的关键还是 INDEX ,SMALL, IF。希望还有困难的同学好好的体会一下,这个组合是相当的有用。
[此贴子已经被作者于2008-1-16 19:55:35编辑过] |