从范围宏复制单个单元格



我在 Sheet1 上有数量不同的数据。如果单元格有值,我需要一个宏来遍历所有范围,然后将其复制到 Sheet2 上的特定列。我不能简单地复制整个范围,因为我不会进入的原因。我需要逐个循环遍历每个单元格,并以特定格式将值粘贴到 Sheet2 上。

我有下面的代码,它给了我

错误"1004"方法"对象范围"_Worksheet"失败。

Sub COPY()
Dim i As Long, j As Long, rng As Range, k As Long, ws1 As Worksheet, ws2 As Worksheet
k = 1
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set rng = Range("B4:D17")
For i = 1 To rng.Rows.Count
If Not IsEmpty(rng.Cells(i, 1)) Then
ws1.Range(rng.Cells(i, 3)).Copy Worksheets("Sheet2").Range("A1")
End If
Next
End Sub

完全忘记rng对象。在For Each语句中会更有必要,但您只是在循环浏览工作表中的行。

创建一个简单的For i语句,只循环您需要的行:

Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("Sheet2")
Dim i As Long
For i = 4 To 17
If Not IsEmpty(ws1.Cells(i, 2)) Then
ws1.Cells(i, 4).Copy ws2.Range("A1")
End If
Next i

正如我已经指出的,您的复制目标ws2.Range("A1")是静态的,因此每次满足条件时,它都会继续覆盖此处的数据。但是你似乎已经处理好了,所以我不会假设你想用它做什么。

最新更新