我想要做的是,在每个工作表中:
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
答案 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中构建的第三步。以下是一些展示如何使用它的答案: