作者JieJuen (David)
看板Office
标题Re: [算表] Excel较少被提及的函数与小技巧
时间Thu Nov 29 23:21:15 2007
之前文章的一部分
出了一题作业...
4. 重覆的条件,皆传回相应的值
这不太算是小技巧了,因为有点麻烦
---------------------------------------------
A B C D
1 b W 1 W
2 a X 3 Y
3 b Y 4 Z
4 B Z 0 FALSE
A栏有"b"(不分大小写)时传回B栏的内容
C1=MATCH("b",A1:$A$4,0)
C2=(MATCH("b",OFFSET($A$1,C1,0):$A$4,0)+C1)*(C1<4)*(C1<>0)
选C2往下拉. 後两项是避免超过范围.
D1=IF(C1>0,INDEX($B$1:$B$7,C1)) 往下拉
---------------------------------------------
大意就是用MATCH找出位置,用OFFSET调整下次搜寻的范围。
要分大小写的话,好像麻烦了些,就当作业吧XD
新增:
一栏解决的方法用offset或index
C1
=IF(ROW()>COUNTIF($A$1:$A$4,"b"),"",
OFFSET($B$1,SMALL(IF($A$1:$A$4="b",ROW($A$1:$A$4)),ROW())-1,))
或
=IF(ROW()>COUNTIF($A$1:$A$4,"b"),"",
INDEX($B$1:$B$4,SMALL(IF($A$1:$A$4="b",ROW($A$1:$A$4)),ROW())))
看起来是变长了,但三个式子合为一个式子,其实写起来是比较简单,也比较短
当然计算可能慢了点
但灵活度也大了,要分大小写就可以改成
=IF(ROW()>COUNT(1/EXACT("b",$A$1:$A$4)),"",
INDEX($B$1:$B$4,SMALL(IF(EXACT("b",$A$1:$A$4),ROW($A$1:$A$4)),ROW())))
要找"含有小写b"
=IF(ROW()>COUNT(FIND("b",$A$1:$A$4)),"",INDEX($B$1:$B$4,
SMALL(IF(ISNUMBER(FIND("b",$A$1:$A$4)),ROW($A$1:$A$4)),ROW())))
不分大小写,FIND改成SEARCH
作业完成...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.59.188
1F:→ JieJuen:补充说明,全部是阵列公式,以Ctrl+Shift+Enter结束公式. 11/30 00:07