VBA - 如何选择刚粘贴的值,然后对它们应用更改?

时间:2015-12-21 23:16:30

标签: excel vba excel-vba

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

我完成了第1步,但我不知道如何做第2步和第3步....我找不到在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

1 个答案:

答案 0 :(得分:1)

已知道要粘贴的值的范围。该范围的第一个单元格是用于PasteSpecial的单元格,行数将等于rng中的行数。所需信息已经存在,只需将其设置为变量即可。

这是一个片段来说明:

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然后改变它是相当奇怪的!也许您可以选择格式化整个列A而不粘贴格式?

range.RemoveDuplicates是在Excel中构建的第三步。以下是一些展示如何使用它的答案: