我正在尝试在Excel中过滤工作表,将一列复制到“中间工作表”,复制每个单元格并将其粘贴到第三个工作表中,在每个数据之间留下3个空行,然后将单元格与3中的数据合并之后是空白的 .
代码一直有效,直到它尝试合并单元格 . 它变得“疯狂”并合并整个A列 . 有人看到错误吗?
Sub Filtrar()
Application.ScreenUpdating = False
Dim Lugar As String
Worksheets("Camiones_nacional").Activate
Lugar = Cells(2, 1).Value
Worksheets("Nacional_enero").Activate
Sheets("Nacional_enero").Select
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=Lugar
Range("A:A").Select
Selection.Copy
Worksheets("Calculos").Activate
Range("E1").Select
ActiveSheet.Paste
Dim celda As Integer
celda = 1
Dim c As Integer
c = 2
Dim c1 As Integer
c1 = 5
Dim c2 As Integer
c2 = 8
Do While celda < 30
Worksheets("Calculos").Activate
Cells(c, 5).Select
Selection.Copy
Worksheets("Camiones_nacional").Activate
Cells(c1, 1).PasteSpecial xlPasteValues
ActiveSheet.Range("A" & c1 & ":" & "A" & c2).Merge
celda = celda + 1
c = c + 1
c1 = c1 + 4
c2 = c2 + 4
Loop
Worksheets("Camiones_nacional").Activate
End Sub
1 回答
首先,翻转选择通常会使VBA绊倒,因此最好使用Destination属性将复制和粘贴写入一行,或者只是重新分配值(因为我将在此处显示,因为您的粘贴方法仅包含值)
此外,根据我的经验,最好在Range中使用Cell调用而不是Column concatnation
在参考整个列合并时,我会通过确保您不会无意中选择已合并范围内的单元格进行调试,因为这会导致合并范围合并