我有一個數據庫(表),並需要將幾個特定的列複製到另一個工作表(sheet3
)。另外,每列應粘貼在sheet3
的特定列中。爲此,我創建了兩個數組:arrSht
包含要複製的列的標題,Arrcol
包含引用列的數字。循環和引用數組元素在一個範圍內的excel宏
然後,我嘗試遍歷兩個數組的每個元素來查找列,複製並粘貼它。我嘗試去如下:
Sub copia()
Dim f As Range
Dim arrSht, Arrcol As Variant, j As Long
arrSht = Array("a","b","c")
Arrcol = Array(5, 6, 8)
For j = LBound(arrSht) To UBound(arrSht)
Set f = Sheet1.Cells.Find(arrSht(j), searchorder:=xlByRows, LookAt:=xlPart)
If Not f Is Nothing Then
Sheet1.Range(f, Sheet1.Cells(Rows.Count, f.Column).End(xlUp)).Copy _
Sheet3.Range(Sheet3.Cells(2, Arrcol(j)))
Else
MsgBox arrSht(j) & "Header not found!"
End If
Next j
end sub
爲了澄清,循環的第一次迭代應該找到其標題爲「A」(第arrSht
元素)的範圍內並將其存儲在f
。然後,複製f
對應的列。最後將其粘貼在Sheet3
第5列(即Arrcol
第一個元素)
當我運行的代碼中,我得到的錯誤:在對應於Sheet1.Range(f, Sheet1.Cells(Rows.Count, f.Column).End(xlUp)).Copy _ Sheet3.Range(Sheet3.Cells(2, Arrcol(j)))
行「方法‘範圍’對象的‘_Worksheet’失敗」。所以,我可能以錯誤的方式引用了數組的元素,或者只是寫了一個錯誤的循環。
非常感謝您的幫助。
不知道,但嘗試更改爲'Sheet1.Range(F,Sheet1.Cells(Rows.Count,F .Column).End(xlUp))。Copy _ Sheet3.Cells(2,Arrcol(j))' – SJR