按列名复制列
问题描述:
我有一张包含3张工作表的工作簿。我想通过使用在A1,B1和C1中分配的列名称将sheet1中的列复制到sheet3。我可以通过使用范围来复制内容。但我找不到任何方法通过使用列名称如“名称”“年龄”等进行复制。我在一些显示错误“1004”的网站上发现了以下代码。对象'_Worksheet'的方法'范围'失败。按列名复制列
Range("P").Value = 15 .
我对excel和VBA很新。 TIA
答
我不完全确定你究竟在做什么,因为你的代码范围(“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