→ JieJuen:補充說明,全部是陣列公式,以Ctrl+Shift+Enter結束公式. 11/30 00:07
之前文章的一部分
出了一題作業...
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