我要做的是将一整列从一张纸复制到另一张纸。结果,我只得到第一行,如下所示:
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
第一行包含无法更改的标题。任何帮助表示赞赏。谢谢!
答案 0 :(得分:1)
.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
等通常被认为是危险的。 This是该主题的不错读物。
您在评论中提到,您希望保留的列中有标题(我假设在目标列中)。为此,只需将第一个单元格的值保存在列中(或标题所在的位置),然后在粘贴后替换这些值。
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
。