Excel VBA用于选择列中的所有内容,包括空格

Excel VBA用于选择列中的所有内容,包括空格,excel,vba,copy-paste,Excel,Vba,Copy Paste,我想做的是把一整列从一张纸复制到另一张纸上。我只得到第一行,结果如下: Sheets("z_raw").Select Range("A2").End(xlDown).Select Selection.SpecialCells(xlCellTypeVisible).Copy Sheets("raw").Select Range("b2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlank

我想做的是把一整列从一张纸复制到另一张纸上。我只得到第一行,结果如下:

Sheets("z_raw").Select
Range("A2").End(xlDown).Select
Selection.SpecialCells(xlCellTypeVisible).Copy
Sheets("raw").Select
Range("b2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

第一行包含无法更改的标题。感谢您的帮助。谢谢大家!

.SpecialCells(xlCellTypeVisible)
只提供可见的单元格。如果要复制整个列,而不是尝试仅查找范围为
Range(“A2”).End(xlDown)
的已用区域,则可以执行以下操作:

Sheets("z_raw").Range("A:A").Copy
Sheets("raw").Range("B:B").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
请记住,使用
select
等通常被视为危险。在这方面有一些好的读物

您在评论中提到,您希望保留的列中有标题(我假设在目标列中)。为此,只需保存列中第一个单元格的值(或标题所在的位置),并在粘贴后替换这些值

Dim header As String
Sheets("z_raw").Range("A:A").Copy
header = Sheets("raw").Range("B1").Value
Sheets("raw").Range("B:B").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("raw").Range("B1").Value = header

请记住,如果您在
B1
中有任何公式,粘贴后将不会传输这些公式。
.Value
属性返回您在单元格中看到的内容。如果有公式,只需将
.Value
替换为
.Formula

即可,第一行包含无法更改的标题。“还有别的办法吗?”保罗更新了我的答案