以下代码会出错,但当我将范围更改为.Range(A2:A9999)
时,它会有效...
但它很难看。有没有办法从A2和下来获取列(A)中的所有数据?并将其复制到B2?
Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value
答案 0 :(得分:1)
通过查找A列中最后一个填充的单元格,您可以更准确地复制所复制的内容。
这会将src表格中A列的内容复制到tgt表格的B栏:
Sub CopyOneColumnToAnother()
Dim wb As Workbook
Dim src As Worksheet
Dim tgt As Worksheet
Dim lastRow As Long
Set wb = ThisWorkbook
Set src = wb.Sheets("Sheet5")
Set tgt = wb.Sheets("Sheet6")
lastRow = src.Range("A" & src.Rows.Count).End(xlUp).Row
tgt.Range("B2:B" & lastRow).Value = src.Range("A2:A" & lastRow).Value
End Sub
您收到错误的原因是您的范围没有有效的终点。 Range ([firstcell]:[lastcell])
是正确的语法,因此您需要为源范围和目标范围中的lastcell添加一行。
请注意,即使您的代码运行,它也不会让您想要。您将A列设置为等于B列。您需要翻转语句的左侧和右侧。
答案 1 :(得分:1)
Sub CopyValues()
Dim rValues As Range
With Sheet1
Set rValues = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
End With
rValues.Offset(, 1).Value = rValues.Value
End Sub
答案 2 :(得分:0)
要将它放在一行中,您可以按如下方式进行:
Sheets("AA").Range("A2", Cells(Rows.Count, "A")).Copy Sheets("BB").Range("B2")
顺便说一下,它复制了所有内容,不仅包括值,还包括格式。要运行它,您的工作表AA应该是活动的。
答案 3 :(得分:0)
为什么不复制整个列并重新插入B1中的内容:
Range("A:A").Copy Columns("B:B")
Range("B1").Value = "Whatever"
更详细:
Dim previous 'As Variant (or whatever it is)
previous = Worksheets("BB").Range("B1").Value
Worksheets("AA").Range("A:A").Copy Worksheets("BB").Columns("B:B")
Worksheets("BB").Range("B1").Value = previous
除非您希望保留B栏中的更多数据(您尚未说明)。