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

标签 vba excel

我想做的是,在每个工作表中:
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

最佳答案

已经知道要粘贴的值的范围。该范围的第一个单元格是用于 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 中为第三步构建的。以下是展示如何使用它的几个答案:

关于VBA - 如何选择刚刚粘贴的值然后对其应用更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34405983/

相关文章:

arrays - 如何使用函数、 "For"循环和 Excel VBA 中的两个现有数组输出值数组?

vba - 使用 2 列删除重复项

excel - 搜索宏未返回所有结果

excel - 表 - Worksheet_Change 触发多次

excel - 地区语言的月份名称和英文通缉

vba - 为 ADO 构造正确的 SQL 字符串以获取具有 MAX Date 的数据

excel - VBA Dictionary.Exists 方法从字符串数组返回假负给定字符串

Excel VBA GetOpenFileName 多选时出错 :=True

excel - 如何检查列表中是否缺少日期?

excel - 使用 Excel 查找功能时避免触发 'Select' 触发器