我的目标:
复制每个当前区域的最后一行并将其粘贴到A26区域
所以A26将是这个新地区的第一个单元
还要切换电池内容
请注意,单元格A中的内容=新范围中的单元格C,
B-> E,C-> B,D-> D,E->
预期结果如下图所示。
当前代码中的问题:
我不确定如何复制所有细胞并将它们粘贴到相应的col中
而不是仅仅突出显示每个最后一行,
一些当前区域突出显示最后两行
还有当前的代码,只复制工作表中的最后一行,因为它在循环中被覆盖了吗?
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的新手。任何人都能给我一些启示吗?
答案 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
而不是每个最后一行都突出显示
我找不到理由,除了实际上有两个方面,原因不明。