→ soyoso: 迴圈於範圍,instr判斷儲存格內包含"["或"(",大於0時回傳 09/03 17:36
→ soyoso: 該儲存格文字,後離開迴圈exit 09/03 17:37
→ soyoso: 數字方面如該欄都為數字,而要找出最後一筆有值的話,可以 09/03 17:39
→ soyoso: range.end或range.end.row 09/03 17:40
→ soyoso: 如該欄不一定都為數字,可以isnumeric,但因()有可能也會 09/03 17:46
→ soyoso: 被判斷為數字,可配合instr為0排除;另也可以vartype或 09/03 17:47
→ soyoso: typename(range.value) 09/03 17:48
→ soyoso: 迴圈部分則是以反序step負值的方式 09/03 17:48
→ joshjetly: 感謝so大,在下先依法試試,有問題再請教 09/04 06:22
各位先進大家好
以下是依法做出的 Function FindLast
--------------------
Public Function FindLast(WorkRng As Range, Optional Sign As String) As String
Dim Rng As Range
For Each Rng In WorkRng
If InStr(Rng, Sign) > 0 Then
FindLast = Rng.Text
End If
Next
End Function
--------------------
若
A1=FindLast(D1:M1,"[")
可回傳 "[7]"
但若是將 WorkRng 改為 OFFSET($D1,,,,COUNTA(1:1)-3)
則回傳數字 "0"
請問是哪裡出問題呢?
麻煩各為先進了
感激不盡!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.67.231.14
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1504522575.A.263.html
→ soyoso: 傳0而回傳[7] 09/04 19:04
→ joshjetly: 感謝so大,這是在下做的,是 Excel 版本的關係嗎? 09/04 19:26
→ soyoso: 因公式所在儲存格a1為第1列內,counta(1:1)會有循環參照 09/04 19:37
→ soyoso: 可將公式調整到其他儲存格(非1:1第1列內)或counta內的儲存 09/04 19:38
→ soyoso: 格,不要包含公式所在儲存格,試試 09/04 19:38
→ joshjetly: 感謝so大,已將範圍參數修改 09/05 13:51
→ joshjetly: FindLast(ByRef RngStart As Rang... 09/05 13:52
→ joshjetly: Set RngWork = Range(RngStart, RngStart.End(xlToRigh 09/05 13:53
→ joshjetly: t)) 09/05 13:54
→ joshjetly: 測試後可正常運作,感激不盡! 09/05 13:55