返回列表 上一主題 發帖

[發問] 讀取及歸類資料

本帖最後由 Andy2483 於 2023-12-26 08:36 編輯

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列與字典,學習方案如下,請各位前輩指教
執行前:


執行結果:


Option Explicit
Sub TEST()
Dim 資料陣列, 空陣列, 字典, 代號$, i&, j%, 結果列號&, 結果欄號%, 結果欄數%, 最大列數%, 工程別$, 關鍵字$
Set 字典 = CreateObject("Scripting.Dictionary")
關鍵字 = Left([B2], 4)
資料陣列 = Range([F3], [B65536].End(3)(2, 0))
ReDim 空陣列(1 To 1000, 1 To 100)
For i = 1 To UBound(資料陣列) - 1
   If InStr(資料陣列(i, 1), 關鍵字) = 0 Then GoTo i01
   結果欄號 = IIf(工程別 <> 資料陣列(i, 1), 結果欄號 + 1, 結果欄號)
   字典(i) = 結果欄號
   工程別 = 資料陣列(i, 1)
   字典(結果欄號 & "/r") = 1
   空陣列(1, 結果欄號) = Split(資料陣列(i, 1), " ")(0)
   資料陣列(i + 1, 1) = IIf(資料陣列(i + 1, 1) = "", 資料陣列(i, 1), 資料陣列(i + 1, 1))
i01: Next
結果欄數 = 結果欄號
For j = 2 To UBound(資料陣列, 2)
   For i = 1 To UBound(資料陣列)
      代號 = Split(資料陣列(i, j) & " ", " ")(1)
      If Not 代號 Like "[A-Z][A-Z]####*" Or 字典(i) = 0 Then GoTo i02
      結果欄號 = 字典(i)
      結果列號 = 字典(結果欄號 & "/r")
      結果列號 = 結果列號 + 1: 字典(結果欄號 & "/r") = 結果列號
      空陣列(結果列號, 字典(i)) = Left(代號, 6)
      If 最大列數 < 結果列號 Then 最大列數 = 結果列號
i02: Next
Next
With [H2]
     .CurrentRegion.ClearContents
     .Resize(最大列數, 結果欄數) = 空陣列
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 不要隨心所欲,要隨心教育自己。
返回列表 上一主題