本文链接:http://oicu.cc.blog.163.com/blog/static/123039471200911933215610/
问题:第一个表格第一列中是人名,第二列是考试的分数,希望在第二个表格中把第一个表格中
分数为60分的人名放在一列中。
公式来源:ExcelHome
假设有7行数据,Sheet2!A1填写公式:
=INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$B$1:$B$7=60,ROW($1:$7),4^8),ROW(1:1)))&""
是数组公式,输入后按Ctrl+Shift+Enter确认,再下拉向下填充。
使用前提是 A65536 单元格只能为空。
公式解释:
4^8=2^16=65536
IF(Sheet1!$B$1:$B$7=60,ROW($1:$7),4^8)
构造一个储存着行数的数组,不满足条件(不是60分)的都用Excel2003里的最大行数65536代替实际行号,比如
B列 构成数组结果
1 59 65536
2 60 2
3 82 65536
4 60 4
ROW(1:1)控制SMALL函数取行号数组里的第几个最小值,返回的是满足条件(60分)的行号,这里不能用
绝对引用,这样填充的结果就能连续。取到行号后用INDEX或INDIRECT查找A列的对应值。
&""的作用是转成文本格式,消去显示的0值。
为了消去#NUM!错误,可以写成:
=IF(ROW(1:1)>COUNTA(Sheet1!A:A),"",INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$B$1:$B$7=60,ROW($1:$7),4^8),ROW(1:1))))&""
发信人: hnny (紫丁香), 信区: OfficeSoft
标 题: excel 求助,谢谢
发信站: 水木社区 (Tue Jan 12 10:39:21 2010), 站内
动态统计一下所有某项值出现的位置
比如:输入
A B
1 中国
2 台湾
3 中国
4 台湾
5 台湾
输出
C D
中国 台湾
1 2
3 4
5
如果A,B增加
A B
6 中国
则自动变为
C
中国
1
3
6
主要就是完成动态生成的功能
发信人: oicu (Oh! I see you!), 信区: OfficeSoft
标 题: Re: excel 求助,谢谢
发信站: 水木社区 (Tue Jan 12 16:52:06 2010), 站内
Web下查看公式,公式中的2个$7根据情况修改大小。
C2
{=IF(ROW(1:1)>COUNTA($A:$A),"",INDEX($A:$A,SMALL(IF($B$1:$B$7=C$1,ROW($1:$7),4^8),ROW(1:1))))&""}
向D2填充,向下填充。
评论