【发布时间】:2018-04-01 00:02:05
【问题描述】:
我正在使用下面的代码从不同的工作表中提取唯一值并将它们粘贴到另一个工作表中。代码运行得非常快,这很棒。但是,我无法弄清楚如何仅将数据粘贴为值而不复制原始格式。我知道您需要将 .PasteSpecial xlValues 设置为特定范围,但是当我尝试这样做时,我收到错误 1004。
任何建议都将不胜感激。谢谢!
Option Explicit
Sub Uniquevalues()
Dim lastrow As Long
Dim wk As Worksheet
Dim wk1 As Worksheet
Set wk = Sheets("X")
Set wk1 = Sheets("Y")
lastrow = Cells(Rows.Count, "B").End(xlUp).Row
wk.Range("B3:B" & lastrow).AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=wk1.Range("c4"), _ ' tried to set afer ("c4") .PasteSpecial xlValues, but it doesn't work
Unique:=True
'wk1.Range("c4").PasteSpecial xlValues - tried like this as well and it doesn't work
End Sub
这就是我摆脱复制格式单元格的方法:
Sub format()
Dim wk2 As Worksheet
Dim lastrow1 As Long
Set wk2 = Sheets("Y")
lastrow1 = wk2.Cells(Rows.Count, "C").End(xlUp).Row
wk2.Range("c4:c" & lastrow1).Select
With Selection
Selection.NumberFormat = "General"
.Value = .Value
.ClearFormats
End With
End Sub
【问题讨论】:
-
ws 从未定义,只有 wk 和 wk1
-
Cells(Rows.Count, "B").End(xlUp).Row 未分配给特定工作表。
-
我的错,从 Excel 文件中取出。现已更正
-
一般来说,最好是复制、粘贴特殊值,然后删除目标工作表中的重复项。
-
我在下面尝试了一个答案。您也没有为
LastRow计算指定工作表