VBA – 如何select刚刚粘贴的值,然后对其应用更改?

我想要做的是在每个工作表中:
1.复制列G(G23和下)中的所有数字,并在A列末尾粘贴特殊数字。
2.格式化粘贴的数字只有一个小数点。
3.复制粘贴的数字并粘贴到B列末尾,并删除重复项。

我完成了第1步,但我不知道如何做第2步和第3步….我无法find方法来select在A列底部刚刚粘贴的数字。我是新来的VBA – 非常感谢您的帮帮我。

这是我到目前为止的代码:

Sub WorksheetLoop() Dim WS_Count As Integer Dim I As Integer Dim rng As Range Dim last As Long 'Set WS_Count equal to the number of worksheets in the active workbook. WS_Count = ActiveWorkbook.Worksheets.Count 'Begin loop, starts from the sixth worksheet For I = 6 To WS_Count last = Worksheets(I).Cells(Rows.Count, "G").End(xlUp).Row Set rng = Worksheets(I).Range("G23:G" & last) Worksheets(I).Select rng.Copy Worksheets(I).Cells(Rows.Count, 1).End(xlUp)(2).PasteSpecial xlPasteFormulasAndNumberFormats ....(what should I do next here?) Next I Application.ScreenUpdating = True End Sub 

已经知道要粘贴的值的范围。 该范围的第一个单元格是用于PasteSpecial单元格,并且行数等于rng的行数。 所需的信息已经存在,所需要的就是将其设置为一个variables。

这里有一个片段来说明:

 Sub Example() Dim last As Long Dim copyRange As Range Dim pasteRange As Range last = Worksheets(1).Cells(Rows.Count, "G").End(xlUp).Row Set copyRange = Worksheets(1).Range("G23:G" & last) Set pasteRange = Worksheets(1).Cells(Rows.Count, 1).End(xlUp)(2) _ .Resize(copyRange.Cells.Count, 1) copyRange.Copy pasteRange.PasteSpecial xlPasteFormulasAndNumberFormats ' use pasteRange for modifying the pasted data End Sub 

可以使用range.NumberFormat来更改格式。 在这种情况下,你可以这样做:

 pasteRange.NumberFormat = "0.0" 

我觉得很奇怪,你首先复制NumberFormat,然后改变它! 也许你可以select格式化整个列A,而不是粘贴格式?


range.RemoveDuplicates内置Excel中的第三步。 这里有几个答案,展示如何使用它:

  • 在excel vba中删除单元格范围内的重复项
  • 删除所有重复的行Excel vba