- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 62
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-3-13
               
|
回復 11# sax868
是要把"Updated Data"對應的值寫入每個工作表的12列以下之AU欄嗎?- Sub Ex()
- Dim Sh As Worksheet, Ar()
- Set d = CreateObject("Scripting.Dictionary") '創建字典物件儲存"Updated Data"對應的值
- For Each Sh In Sheets
- With Sheets("Updated Data")
- For Each a In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
- d(a & a.Offset(, 3) & a.Offset(, 12)) = a.Offset(, 49).Value '以A、D、M為索引存入AX欄位的值
- Next
- End With
- With Sh
- If UBound(Filter(Array("Currency", "DATA", "Updated Data"), .Name, True)) < 0 Then '除了這些工作表以外執行
- ReDim Preserve Ar(57, x) '擴增陣列
- If IsEmpty(Ar(0, 0)) Then ',如果陣列還沒建立先寫入標題列
- Ar(0, x) = .[B1].Value: Ar(1, x) = .[B2].Value: Ar(2, x) = .[D1].Value
- s = 3
- For Each a In .[A11:BB11].Value
- Ar(s, x) = a
- s = s + 1
- Next
- x = x + 1
- End If
- r = 12 '從第12列以下開始讀入資料到陣列中
- Do Until .Cells(r, 1) = "" '直到A欄為空白為止
- ReDim Preserve Ar(57, x)
- Ar(0, x) = .[C1].Value: Ar(1, x) = .[C2].Value: Ar(2, x) = .[E1].Value
- s = 3
- For Each a In .Range(.Cells(r, "A"), .Cells(r, "BB")).Value '將A:BB欄位讀入陣列
- Ar(s, x) = a
- s = s + 1
- Next
- .Cells(r, "AU") = d(Ar(0, x) & Ar(3, x) & Ar(12, x)) '將工作表的AU欄位寫入對應的Updated Data值
- x = x + 1: r = r + 1 '下一列
- Loop
-
- End If
- End With
- Next
- With Sheets.Add(after:=Sheets(Sheets.Count)) '新增工作表於最後
- For i = 0 To UBound(Ar, 2)
- For j = 0 To 56
- .[A1].Offset(i, j) = Ar(j, i) '一一將陣列元素寫入儲存格
- Next
- Next
- End With
- End Sub
複製代碼 |
|