Board logo

標題: 資料對應 [打印本頁]

作者: y663258    時間: 2011-2-8 11:05     標題: 資料對應

大家好,敬請幫忙如附件說明vba要怎麼寫,想了很久就是做不到。
作者: Hsieh    時間: 2011-2-8 11:30

回復 1# y663258
  1. Sub nn()
  2. Dim ar(7, 6)
  3. ar(1, 2) = "年": ar(3, 2) = "月": ar(5, 2) = "日"
  4. r = 4: k = 1
  5. With Sheet2
  6. For Each a In .Range(.[A2], .[A65536].End(xlUp))
  7.   ar(0, 4) = a.Value
  8.   ar(0, 2) = a.Offset(, 1).Value
  9.   ar(2, 2) = a.Offset(, 2).Value
  10.   ar(4, 2) = a.Offset(, 3).Value
  11.   ar(0, 0) = a.Offset(, 4).Value
  12.   Sheet1.Cells(r, k).Resize(7, 6) = ar
  13.   k = k + 6
  14.   If k = 25 Then k = 1: r = r + 10
  15. Next
  16. End With
  17. End Sub
複製代碼

作者: y663258    時間: 2011-2-8 12:04

Hsieh 版主,謝謝經測試完全正確,祈望獲得注解以便學習可以嗎。
作者: Hsieh    時間: 2011-2-8 16:01

回復 3# y663258
  1.     Sub nn()
  2. Dim ar(7, 6)  '宣告一個6列7欄的陣列
  3. ar(1, 2) = "年": ar(3, 2) = "月": ar(5, 2) = "日" '固定不變的值先寫入陣列
  4. r = 4: k = 1  '開始寫入的位置r是列位,k是欄位
  5. With Sheet2
  6. For Each a In .Range(.[A2], .[A65536].End(xlUp))  
  7.   ar(0, 4) = a.Value                     'A欄的值是陣列中第5欄的第1個位置
  8.   ar(0, 2) = a.Offset(, 1).Value    'B欄的值是陣列中第3欄的第1個位置
  9.   ar(2, 2) = a.Offset(, 2).Value    'C欄的值是陣列中第3欄的第3個位置
  10.   ar(4, 2) = a.Offset(, 3).Value    'D欄的值是陣列中第3欄的第5個位置
  11.   ar(0, 0) = a.Offset(, 4).Value    'E欄的值是陣列中第1欄的第1個位置
  12.   Sheet1.Cells(r, k).Resize(7, 6) = ar  '寫入到表格
  13.   k = k + 6 '準備下一個寫入欄位
  14.   If k = 25 Then k = 1: r = r + 10  '因為標籤橫向有4張,每張佔了6欄,所以當寫入位置到了25欄時必須回到第一欄,並向下位移10列寫入
  15. Next
  16. End With
  17. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)