下面的代碼給出了一個錯誤,但當我將範圍更改爲.Range(A2:A9999)
時,它可以工作...Excel VBA上的範圍錯誤 - 快速修復?
但它很醜。有沒有辦法從A2向下抓取列(A)中的所有數據?並將其複製到B2?
Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value
下面的代碼給出了一個錯誤,但當我將範圍更改爲.Range(A2:A9999)
時,它可以工作...Excel VBA上的範圍錯誤 - 快速修復?
但它很醜。有沒有辦法從A2向下抓取列(A)中的所有數據?並將其複製到B2?
Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value
有它的一條線,你可以如下做到這一點:
Sheets("AA").Range("A2", Cells(Rows.Count, "A")).Copy Sheets("BB").Range("B2")
順便說一句,它複製的一切,不但值,而且格式。要運行它,您的工作表AA應該處於活動狀態。
完美!謝謝 – GimGanDi
通過查找列A中最後一個填充的單元格,您可以更精確地查看正在複製的內容。
此副本的SRC片與TGT片的B列列A的內容:
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])
是正確的語法,因此您需要爲源和目標範圍中的最後一個單元添加一行。
請注意,即使您的代碼運行,它也不會想要你想要的。您將A列設置爲等於B列。您需要翻轉陳述的左側和右側。
謝謝你的快速回答,但我試圖將它從一張複製到另一張。 (表1至表2)。這隻會在同一張表中複製列。 – GimGanDi
我明白了。我編輯了答案,從一張紙複製到另一張。現在就試試。 (將Sheet5和Sheet6更改爲1和2,或者您的工作簿中的任何內容。) –
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
爲什麼不只是複製整列並重新插入無論是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進一步下跌你想保留(你沒有說明)。
你也在說你想從A複製到B,但是你的代碼試圖從B複製到A. –