我的問題是類似的,但比這個線程更復雜How to Consolidate Data from Multiple Excel Columns All into One Column。整合來自多列的數據
這裏是示例Excel
Date Measure1 A B Date Measure2 A B C Date.....
11/11/11 1234 1 2 11/12/12 5678 1 3 3 12/12/12 ...
12/11/12 234 34 234 12/12/13 345 342 23 33 12/12/13 ...
........
有在Excel中幾百列。一個日期列後跟一個測量列,然後是其他一些列。 現在我只想要日期列,度量名稱列和值列。 結果excel文件想
Date Measure Name Value
11/11/11 Measure1 1234
11/12/12 Measure2 5678
12/12/12 ....
....
12/11/12 Measure1 234
12/12/13 Measure2 123
我怎麼可能通過VBA實現呢?由於我有這樣的數千個文件,VBA似乎是合併這些文件並加載到數據庫的最佳方式。
我總是
Run-time error '1004'
Application -defined or object -defined eror"
在
w.Sheets("DataSort").Range("A1").Resize(k, UBound(Arr2, 2)) = Arr2
這裏是我的代碼
Sub convertExcel()
Dim Arr1, Arr2()
Dim Rnum As Integer, Cnum As Integer, Tnum As Integer
Dim i As Integer, j As Integer, k As Integer
'Rnum = row number; Cnum = column number; Tnum as total number
Application.ScreenUpdating = False
Set w = Workbooks.Open("FileNAME~~~~")
Rnum = w.Sheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
Cnum=208
Tnum = Rnum * Cnum/2
w.Sheets.Add.Name = "DataSort"
Arr1 = Range("A1:GZ" & Rnum)
ReDim Arr2(1 To Tnum, 1 To 3)
For j = 2 To Cnum
If w.Sheets("Data").Cells(1, j) = "Date" Then
For i = 2 To Rnum
If Arr1(i, j) <> "" Then
k = k + 1:
Arr2(k, 1) = Arr1(i, j)
Arr2(k, 2) = Arr1(1, j)
Arr2(k, 3) = Arr1(i, j + 1)
End If
Next
End If
Next
w.Sheets("DataSort").Range("A1").Resize(k, UBound(Arr2, 2)) = Arr2
w.Close True
Application.ScreenUpdating = True
End Sub
什麼是您正在使用至今的代碼?這個網站不是一個代碼寫作服務,並顯示你的努力迄今爲止在獲得更好和更有用的答案方面有很長的路要走。 – enderland
@enderland我的代碼是手動讀取列索引,第一行是測量名稱。但是我的迭代目前不起作用。由於這些測量是保密的,所以我沒有有價值的代碼來展示。 – Decula
你將有一個很難得到與代碼的幫助,沒有人能看到.. – enderland