复制"区别" (文本)剪贴板VBA Excel的值

时间:2014-06-25 15:16:37

标签: excel-vba vba excel

通常当我需要使用SUMIFS的不同(非重复值)时,我只需将整个列复制到另一个工作表/范围并使用“删除重复项”功能。

我希望我可以右键单击列的范围并选择“复制不同的值”。复制粘贴时,仅粘贴非重复值。

换句话说/方式,在“粘贴选项”上 - 还有另一个函数调用“Paste Distinct”

重要的一步是获得我遇到问题的不同价值观。 我可以通过创建一个“临时表”来存储所有值并删除重复项,然后将它们复制到剪贴板。但是,我正在避免这种情况。

1 个答案:

答案 0 :(得分:2)

由于您已经创建了自定义菜单,这是我创建内存中唯一值集合并将它们导出到工作表的另一部分的过程。您必须修改此代码以适合您的特定情况,但希望它能让您朝着正确的方向前进。

请务必注意,您需要设置对Microsoft Scripting Runtime的引用才能使其工作(这是Dictionary对象所在的位置):

Sub test()

Dim dictValues       As New Dictionary
    Dim i            As Long
    Dim sheetValues  As Variant
    Dim exportValues As Variant
    Dim joinedValues As String

    sheetValues = Sheet1.Range("A1").Resize(Sheet1.Range("A1048576").End(xlUp).Row, 2)

    For i = 1 To UBound(sheetValues)
        dictValues(sheetValues(i, 1)) = sheetValues(i, 2)
    Next

    exportValues = dictValues.Keys

    Sheet1.Range("B1").Resize(UBound(Application.Transpose(exportValues)), 1) = Application.Transpose(exportValues)

End Sub