返回列表 上一主題 發帖

取出固定字串後的數字

本帖最後由 Andy2483 於 2023-6-1 08:53 編輯

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA陣列,學習方案如下,請各位前輩指教

執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, Crr, A, i&, j%, M%
'↑宣告變數
Brr = Range([A2], [A65536].End(3))
'↑令Brr變數是 二維陣列,以A欄儲存格值帶入
ReDim Crr(1 To UBound(Brr), 1 To 100)
'↑令Crr變數是 二維空陣列,縱向範圍同Brr陣列,橫向1~100
For i = 1 To UBound(Brr)
'↑設順迴圈!逐列執行
   If InStr(Brr(i, 1), "fee$") = 0 Then GoTo i01 Else: A = Split(Brr(i, 1), "fee$")
   '↑如果Brr陣列值不包含 "fee$"就跳到標示i01位置繼續執行,
   '否則就令A變數是 一維陣列,以"fee$" 分割Brr陣列值帶入A陣列裡

   If M < UBound(A) Then M = UBound(A)
   '↑如果M變數小於A陣列的最大索引號,就令M變數是 A陣列的最大索引號
   For j = 1 To UBound(A): Crr(i, j) = Val(A(j)): Next
   '↑設順迴圈!將A陣列值轉化為數值後寫入Crr陣列裡
i01: Next
[B2].Resize(UBound(Brr), M) = Crr
'↑令Crr陣列值從[B2]開始寫入匡列的儲存格中,超過範圍的陣列值忽略
Erase Brr, Crr, A
'↑令釋放變數
End Sub


'==================================================
'補充:以下另一種情況
Sub TEST_1()
Dim Brr, Crr, A, i&, j%, M%
Brr = Range([A2], [A65536].End(3))
ReDim Crr(1 To UBound(Brr), 1 To 100)
For i = 1 To UBound(Brr)
   If InStr(Brr(i, 1), "fee") = 0 Then GoTo i01 Else: A = Split(Brr(i, 1), "fee")
   If M < UBound(A) Then M = UBound(A)
   For j = 1 To UBound(A): Crr(i, j) = Val(Replace(A(j), "$", "")): Next
i01: Next
[B2].Resize(UBound(Brr), M) = Crr
Erase Brr, Crr, A
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 有願放在心裡,沒有身體力行,正如耕田不播種,皆是空過因緣。
返回列表 上一主題