【问题标题】:Unique Values range list唯一值范围列表
【发布时间】: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 从未定义,只有 wkwk1
  • Cells(Rows.Count, "B").End(xlUp).Row 未分配给特定工作表。
  • 我的错,从 Excel 文件中取出。现已更正
  • 一般来说,最好是复制、粘贴特殊值,然后删除目标工作表中的重复项。
  • 我在下面尝试了一个答案。您也没有为 LastRow 计算指定工作表

标签: excel vba


【解决方案1】:

如果没有您的数据,我无法对此进行测试,但请尝试以下操作:

Option Explicit

Sub Uniquevalues()

    Dim wk As Worksheet, wk1 As Worksheet, lastrow As Long
    Set wk = Sheets("X")
    Set wk1 = Sheets("Y")

    lastrow = wk.Cells(Rows.Count, "B").End(xlUp).Row
    wk.Range("B3:B" & lastrow).AdvancedFilter xlFilterCopy, , wk1.Range("c4"), True

End Sub

见:Range.AdvancedFilter Method (Excel)

【讨论】:

  • 刚刚测试了这个。感谢您帮助设置“最后一行”。它仍然采用上一张表中的格式。不,我试图复制的数据中没有公式。只有数字在其单元格上具有条件格式。我将设置 .ClearFormats 作为特定范围的另一个代码,我想它应该可以工作......再次感谢!
  • @alex2002 - 不客气! (不要忘记✓Accept一个可以帮助您解决问题的答案 - 您获得 +2 声望,接受答案的作者获得 +15 声望!一旦达到 15 个代表,您可以 ▲Upvote 任何您认为有用且写得好的答案。)
  • @alex2002 - OMG 我不得不问:你是@Alex2002,因为你是在2002年出生的吗?我的儿子是Alex,2004年出生。2年后他会这么好吗?!你比那个年龄大,对吧?! :-)
  • 哈哈,是的,我年纪大了。这是我弟弟的账户。但他实际上也在做 VBA。所以当我被卡住时,我只是使用他的帐户。他通过参加 Udemy.com 上的一些在线课程开始了 VBA - 非常便宜且很好的解释。您的儿子也应该尝试一下 :)
  • 那你哥是2002年出生的,用的VBA?棒极了。 (实际上那和我刚开始时的年龄一样,但我们学校里只有一台电脑,而且我是唯一一个知道如何使用它的人!)我现在将那个网站加入书签,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
相关资源
最近更新 更多