1

下面的代码给出了一个错误,但是当我将范围更改为.Range(A2:A9999)它时...

但它很丑。有没有办法从 A2 和向下获取列 (A) 中的所有数据?并将其复制到B2?

Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value
4

4 回答 4

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 列。您需要翻转语句的左侧和右侧。

于 2013-07-10T22:00:54.253 回答
1

要将它放在一行中,您可以按如下方式进行:

Sheets("AA").Range("A2", Cells(Rows.Count, "A")).Copy Sheets("BB").Range("B2")

顺便说一句,它会复制所有内容,不仅是值,还包括格式。要运行它,您的工作表 AA 应该是活动的。

于 2013-07-10T22:01:38.600 回答
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
于 2013-07-10T22:06:28.327 回答
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 列下方的数据(您没有说明)。

于 2013-07-10T22:08:57.993 回答