2017-08-31 109 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 

希望这是一个很好的开球点。