返回列表 上一主題 發帖

如何截取某一字眼(K2)冒後之後的10個字

回復 1# leiru


    謝謝前輩發表此主題與範例
後學藉此帖習得多樣知識與經驗,以下心得註解請參考
執行前:


執行結果:


Option Explicit
Sub TEST_20221228_1()
Dim i&, N&, A$, Arr
'↑宣告變數:(i,N)是長整數變數,A是字串變數,Arr是通用型變數
Arr = Range([A1], Cells(Rows.Count, 1).End(3))
'↑令Arr是 二維陣列,以[A1]到A欄有內容最後列儲存格,這之間儲存格值倒入
For i = 1 To UBound(Arr)
'↑設順迴圈!i從1到Arr陣列縱向最大索引列號數
   A = StrConv(Arr(i, 1), vbNarrow)
   '↑令A這字串變數是i迴圈Arr陣列值經StrConv() 將全形字轉為半形字 的字串
   'StrConv 函式
   'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/strconv-function

   If A Like "*:??????????*" Then
   '↑如果A字串變數包含 ":"冒號後面有10個以上字元 ?
      Arr(i, 1) = Left(Split(A, ":")(1), 10)
      '↑令i迴圈Arr陣列值換成: A字串變數以 ":"字元分割後的索引號1的一維陣列值再取左側10字元
      If Arr(i, 1) Like "7????????H" = False Then N = N + 1
      '↑如果i迴圈Arr陣列值不是前7 後H 包夾的10個字元,就令N這長整數變數累加1
      Else
         Arr(i, 1) = ""
         '↑令i迴圈Arr陣列值是 空字元
   End If
Next
[C1].Resize(UBound(Arr), 1) = Arr
'↑令[C1] 擴展向下Arr陣列縱向最大索引列號數列, 向右不擴展, 這範圍儲存格值以Arr陣列值帶入
MsgBox N & " 個結果疑似規則異常!"
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2022-12-28 08:56 編輯

回復 7# leiru


    謝謝前輩
以下變更條件執行結果與心得註解,請參考

執行前:


執行結果:


Option Explicit
Sub TEST_20221228_2()
Dim i&, N&, A$, Arr, Brr, j
'↑宣告變數:(i,N)是長整數變數,A是字串變數,(Arr,Brr,j)是通用型變數
Arr = Range([A1], Cells(Rows.Count, 1).End(3))
'↑令Arr是 二維陣列,以[A1]到A欄有內容最後列儲存格,這之間儲存格值倒入
For i = 1 To UBound(Arr)
'↑設順迴圈!i從1到Arr陣列縱向最大索引列號數
   A = StrConv(Arr(i, 1), vbNarrow)
   '↑令A這字串變數是i迴圈Arr陣列值經StrConv() 將全形字轉為半形字 的字串
   'StrConv 函式
   'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/strconv-function

   If A Like "*:7????????H*" Then
   '↑如果A字串變數包含 ":"冒號後面有10個以上字元 ?
      Brr = Split(A, ":")
      '↑令Brr是一維陣列,帶入以":"分割A字串變數的陣列值
      For Each j In Brr
      '↑設順迴圈!令j是 Brr陣列裡的值
         j = Left(j, 10)
         '↑令j這通用變數是自身 取前10個字的字串
         If j Like "7????????H" Then Arr(i, 1) = j: Exit For
         '↑如果j字串變數是 前7 後H 包夾的10個字元,就令i迴圈Arr陣列值換成j變數值:結束j迴圈
      Next
      If Arr(i, 1) Like "7GA??????H" = False Then N = N + 1
      '↑如果i迴圈Arr陣列值不是前7GA 後H 包夾的10個字元,就令N這長整數變數累加1
      Else
         Arr(i, 1) = ""
         '↑令i迴圈Arr陣列值是 空字元
   End If
Next
[C1].Resize(UBound(Arr), 1) = Arr
'↑令[C1] 擴展向下Arr陣列縱向最大索引列號數列, 向右不擴展, 這範圍儲存格值以Arr陣列值帶入
MsgBox N & " 個結果疑似規則異常!"
Set Arr = Nothing
End Sub

#12樓範例:
[E1].Resize(UBound(Arr), 1) = Arr:
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題