2017-08-31 105 views
0

我有一張包含3張工作表的工作簿。我想通過使用在A1,B1和C1中分配的列名稱將sheet1中的列複製到sheet3。我可以通過使用範圍來複制內容。但我找不到任何方法通過使用列名稱如「名稱」「年齡」等進行復制。我在一些顯示錯誤「1004」的網站上發現了以下代碼。對象'_Worksheet'的方法'範圍'失敗。按列名複製列

Range("P").Value = 15 . 

我對excel和VBA很新。 TIA

+2

[Excel VBA:我們可以通過名稱引用一個列嗎?](https://stackoverflow.com/questions/30633763/excel-vba-can-we-refer-a-column-by-its -name) – MatSnow

+0

Excel不允許這種行爲。您可以得到的最接近的是按照@MatSnow評論中推薦的練習。 – Stewbob

回答

0

我不完全確定你究竟在做什麼,因爲你的代碼範圍(「P」)。值沒有多大意義,因爲你只定義了一半的單元格範圍。但我最好的猜測是你試圖複製基於表頭的整個列(正如你提到它在A1,B1和C1中分配的那樣)?

如果是這種情況,那麼這個快速宏循環遍歷HeaderRange中定義的每個頭,並且如果它與您的查詢匹配,則將其複製到sheet3中的單元格A1。

Sub CopyCol() 
Dim HeaderRange As Range 
Dim Query As String 

Set HeaderRange = Worksheets("Sheet1").Range("A1:C1") 
Query = "Name" 

For Each hcell In HeaderRange ' Loop through each header cell 
    If hcell.Value = Query Then ' If it matches your query then copy entire column 
     Range(hcell.Address).EntireColumn.Copy _ 
     Destination:=Sheets("Sheet3").Range("A1") 
    End If 
Next hcell 

End Sub 

希望這是一個很好的開球點。