我不完全確定你究竟在做什麼,因爲你的代碼範圍(「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
希望這是一個很好的開球點。
[Excel VBA:我們可以通過名稱引用一個列嗎?](https://stackoverflow.com/questions/30633763/excel-vba-can-we-refer-a-column-by-its -name) – MatSnow
Excel不允許這種行爲。您可以得到的最接近的是按照@MatSnow評論中推薦的練習。 – Stewbob