VBA:复制并粘贴当前区域的最后一行

时间:2017-06-23 08:56:40

标签: excel vba excel-vba

我的目标:
复制每个当前区域的最后一行并将其粘贴到A26区域 所以A26将是这个新地区的第一个单元 还要切换电池内容 请注意,单元格A中的内容=新范围中的单元格C,
B-> E,C-> B,D-> D,E-> 预期结果如下图所示。

当前代码中的问题:
我不确定如何复制所有细胞并将它们粘贴到相应的col中 而不是仅仅突出显示每个最后一行,
一些当前区域突出显示最后两行 还有当前的代码,只复制工作表中的最后一行,因为它在循环中被覆盖了吗?

expected results

Dim ws As Worksheets
Dim rng As Range
Dim r As Long
Dim wb As Workbook

Set wb = ThisWorkbook
For Each ws In wb.Worksheets        
    If ws.Name = "Master" Then
    For Each rng In ws.UsedRange.SpecialCells(xlCellTypeConstants, 3).Areas
            r = rng.Cells(rng.Rows.Count, 1).Row 'last row
        Set rng = ws.Range(Cells(r, "A"), Cells(r, "J")) 'range = last row cells from col A-J
        rng.Interior.ColorIndex = 3 'highlight that range
        rng.Copy
        ws.Range("A26").PasteSpecial xlPasteValues 'paste them all to same sheet A26
    Next rng
    End If
Next ws
End Sub

我还是vba的新手。任何人都能给我一些启示吗?

1 个答案:

答案 0 :(得分:0)

rng.Copy
ws.Range("A26").PasteSpecial xlPasteValues 'paste them all to same sheet A26

您的代码将始终覆盖同一行。为避免这种情况,您可以将上述语句更改为

Dim pasteRow As Long
pasteRow = ws.Cells(ws.Rows.count, 1).End(xlUp).row + 1
If pasteRow < 26 Then pasteRow = 26
ws.Cells(pasteRow, "A").Resize(,rng.Columns.Count).Value = rng.Value
  

B-> E,C-> B,D-> D,E-> A

要在复制时切换单元格,您可以更换上面的最后一行,即

ws.Cells(pasteRow, "E").Value = rng.Cells(1, "B").Value
ws.Cells(pasteRow, "B").Value = rng.Cells(1, "C").Value
ws.Cells(pasteRow, "D").Value = rng.Cells(1, "D").Value
ws.Cells(pasteRow, "A").Value = rng.Cells(1, "A").Value
  

而不是每个最后一行都突出显示

我找不到理由,除了实际上有两个方面,原因不明。