[爆卦]vba選取有資料的儲存格是什麼?優點缺點精華區懶人包

為什麼這篇vba選取有資料的儲存格鄉民發文收入到精華區:因為在vba選取有資料的儲存格這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者joshjetly ( )看板Office標題Re: [算表] VBA 選取一列中含特定字元最...


※ 引述《joshjetly ( )》之銘言:
軟體: Excel VBA

版本: 2010


各位先進大家好

在下是 VBA 新手

有批好幾頁

每頁接近萬列的資料要整理

每列約有 50~100 個儲存格

資料大致如下


A B C | D E F G H I J K L M
|
1 [7] (5) 1 | [3] (4) 13 [2] (2) 7 40 [7] (5) 1
|
2 [2] (4) 9 | [9] (6) 4 [2] (4) 8 5 16 9
|
3 [6] (3) 20 | [6] (5) 1 (8) 3 2 1 (3) 29 20
|

在下希望可以在

A 欄:找出同列中最後筆包含 "[" 的文字

B 欄:找出同列中最後筆包含 "(" 的文字

C 欄:找出同列中最後筆數字

請問該如何用 VBA Function 處理呢?

麻煩各為先進了

感激不盡!

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.67.5.101
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1504430247.A.5A6.html
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: https://i.imgur.com/OHXMc4b 測試改為offset(...)並無回 09/04 19:04
soyoso: 傳0而回傳[7] 09/04 19:04
joshjetly: https://imgur.com/a/kQR9f 09/04 19:24
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

你可能也想看看

搜尋相關網站