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