返回列表 上一主題 發帖

整理資料

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

執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, Crr, V, Z$, Q, i&, T$
'↑宣告變數
Brr = Range([E6], [E65536].End(3))
'↑令Brr變數是 二維陣列,以E欄儲存格值帶入陣列中
Z = "Invoice [#] ######  #*/#*/####"
'↑令Z變數是字串
ReDim Crr(1 To UBound(Brr) - 1, 1 To 4)
'↑令Crr變數是 二維空陣列,縱向範圍1~Brr陣列縱向最大索引列號-1,橫向範圍1~4
For i = 1 To UBound(Brr)
'↑設順迴圈!
   T = Brr(i, 1)
   '↑令T變數是 迴圈Brr陣列值(字串)
   If T Like Z Then V = Split(T, " "): GoTo i01
   '↑如果以 Like 運算子 判別(T變數與Z變數)回傳 True?
   '是就令V是(以空白字元分割T變數的一維陣列),令程序跳到i01位置繼續執行

   If Val(T) = 0 Then GoTo i01 Else T = T & " "
   '↑如果T變數轉數值後是 0?是就令程序跳到i01位置繼續執行,
   '否則就令T變數連接" "組成為新字串

   Crr(i - 1, 1) = V(2): Crr(i - 1, 2) = V(4)
   '↑令Crr陣列第1欄寫入(2索引號V陣列值),
   '令Crr陣列第2欄寫入(4索引號V陣列值)

   Q = InStr(T, " ")
   '↑令Q變數是判定T變數第1個空白字元的位置
   Crr(i - 1, 3) = Left(T, Q - 1)
   '↑令Crr陣列第3欄寫入T變數的左側(Q - 1)個字元
   Crr(i - 1, 4) = Trim(Mid(T, Q + 1))
   '↑令Crr陣列第4欄寫入T變數從(Q + 1)個字以後的字串
i01: Next
[A7].Resize(UBound(Crr), 4) = Crr
'↑令從[A7]開始擴展的範圍儲存格值是Crr陣列值
Erase Brr, Crr, V
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 稻穗結得越飽滿,越會往下垂,一個人越有成就,就要越有謙沖的胸襟。
返回列表 上一主題