- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-3-24
|
本帖最後由 Andy2483 於 2023-12-1 15:14 編輯
謝謝論壇,謝謝各位前輩
後學藉此帖練習字串反向與陣列,學習方案如下,請各位前輩指教
執行前:
執行結果:
Option Explicit
Sub TEST()
Dim Brr, S, i&, V1, Ve
'↑宣告變數
Brr = Range([B1], [B65536].End(xlUp))
'↑令Brr變數是 以指定的儲存格範圍值的二維陣列
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到Brr陣列縱向最大索引列號
S = Split(Trim(Brr(i, 1)) & "-", "-")
'↑令S變數是分割字串的一維陣列
V1 = Val(StrReverse(Mid(Val("1" & StrReverse(S(0))), 2)))
'↑令V1變數是將0索引號陣列值字串反轉後,在前方連接字串"1"成為新字串,
'再此新字串轉為數值,取第2字之後的字,接著將此字串反轉回來,最後轉為數值
Ve = Val(S(UBound(S) - 1))
'↑令Ve變數是倒數第2個陣列值轉為數值
If V1 > 390 Or UBound(S) - 1 = 0 Then Brr(i - 1, 1) = "": GoTo i01
'↑如果藍色區域數值大於390 或 Brr(i, 1)字串裡沒有"-",
'就令陣列放結果的陣列值清除,跳到標示的位置繼續執行
Brr(i - 1, 1) = Switch((Ve <= 180) * (Ve > 90), 2, Ve <= 90, 1)
'↑令陣列放結果的陣列值寫入正確值
i01: Next
[D2].Resize(UBound(Brr) - 1) = Brr
'↑令[D2]儲存格擴展所需範圍儲存格值以 Brr陣列值帶入
End Sub |
|