返回列表 上一主題 發帖

[發問] 陣列資料依欄位抬頭名稱進行擺放

本帖最後由 luhpro 於 2016-4-16 04:17 編輯

回復 1# art00083303

  1. Sub NN()
  2.   Dim iI%, iJ%, iCol%
  3.   Dim lRow&
  4.   Dim aR()
  5.   Dim vD
  6.   
  7.   [B22:I100].Clear ' 清掉上一次的資料
  8.   
  9.   Set vD = CreateObject("Scripting.Dictionary")
  10.   iCol = 4
  11.   While Cells(21, iCol) <> ""
  12.     vD(CStr(Cells(21, iCol))) = iCol ' vD(項目名稱) = 欄位號碼
  13.     iCol = iCol + 1
  14.   Wend
  15.   
  16.   lRow = 22
  17.   For iI = 2 To 14 Step 6 ' 3 個表格
  18.     For iJ = 1 To 3
  19.       With Cells(lRow, 2)
  20.         .NumberFormat = "yyyy/m/d"
  21.         .Value = Cells(iI + iJ, 2) ' DATE
  22.       End With
  23.       
  24.       With Cells(lRow, 3)
  25.         .NumberFormat = "hh:mm"
  26.         .Value = Cells(iI + iJ, 3) ' TIME
  27.       End With
  28.       
  29.       iCol = 4
  30.       While Cells(iI + iJ, iCol) <> "" ' HTM 與 其他
  31.          With Cells(lRow, vD(CStr(Cells(iI, iCol))))
  32.            .Value = Cells(iI + iJ, iCol)
  33.            .Interior.ColorIndex = Cells(iI + iJ, iCol).Interior.ColorIndex ' 設定底色
  34.          End With
  35.          iCol = iCol + 1
  36.       Wend
  37.       lRow = lRow + 1
  38.     Next
  39.   Next
  40. End Sub
複製代碼
放.zip (7.12 KB)

最後, 再呼籲一下,
若資料較多且無規律性,
請開串的人順便提供範例檔,
可加快大家回文的速度. (節省 Key 範例檔資料的時間)

TOP

回復 4# art00083303
那就在抓取資料時, 一併建立結果標題攔 : (當然, 順序會變成依抓取先後排列)

  1. Private Sub cbMerge_Click()
  2.   Dim iI%, iJ%, iSCol%, iTCol%
  3.   Dim lRow&
  4.   Dim aR()
  5.   Dim vD
  6.   
  7.   Rows("21:" & Rows.Count).Clear ' 清掉上一次的資料(含標題攔)
  8.   
  9.   Set vD = CreateObject("Scripting.Dictionary")
  10.   
  11.   Cells(21, 2) = "DATE"
  12.   Cells(21, 3) = "TIME"
  13.   
  14.   lRow = 22
  15.   iTCol = 4
  16.   For iI = 2 To 14 Step 6 '3 個表格
  17.     iSCol = 4
  18.     While Cells(iI, iSCol) <> "" ' 檢查標題攔
  19.       If Not (vD.Exists(CStr(Cells(iI, iSCol)))) Then
  20.         vD(CStr(Cells(iI, iSCol))) = iTCol
  21.         Cells(21, iTCol) = Cells(iI, iSCol)
  22.         iTCol = iTCol + 1
  23.       End If
  24.       iSCol = iSCol + 1
  25.     Wend
  26.    
  27.     For iJ = 1 To 3
  28.       With Cells(lRow, 2)
  29.         .NumberFormat = "yyyy/m/d"
  30.         .Value = Cells(iI + iJ, 2) ' DATE
  31.       End With
  32.       
  33.       With Cells(lRow, 3)
  34.         .NumberFormat = "hh:mm"
  35.         .Value = Cells(iI + iJ, 3) ' TIME
  36.       End With
  37.       
  38.       iSCol = 4
  39.       While Cells(iI + iJ, iSCol) <> ""
  40.         With Cells(lRow, vD(CStr(Cells(iI, iSCol))))
  41.           .Value = Cells(iI + iJ, iSCol)
  42.           .Interior.ColorIndex = Cells(iI + iJ, iSCol).Interior.ColorIndex ' 複製底色
  43.         End With
  44.         iSCol = iSCol + 1
  45.       Wend
  46.       lRow = lRow + 1
  47.     Next
  48.   Next
  49. End Sub
複製代碼
放-a.zip (11.18 KB)

TOP

        靜思自在 : 一個人的快樂.不是因為他擁有得多,而是因為他計較得少。
返回列表 上一主題