Excel 如何仅复制和粘贴vba中的唯一值?

Excel 如何仅复制和粘贴vba中的唯一值?,excel,vba,Excel,Vba,我正在尝试在vba中复制和粘贴列的唯一值。挑战在于:excel没有固定的位置,位置可以根据数据进行更改。从图中可以看出,我想获取A列的数量(abs)的唯一值,然后将其粘贴到B列上,除此之外,我不想接触A列中的数量。在数量和绝对数量之间有两个空单元格。金额和绝对金额都是动态的 这里 如上所述,这些表是动态的。如果金额的数量变大,则金额将添加一个新行,并且金额(abs)始终保持两个空单元格之间的距离。有什么建议可以帮助你吗 如果您可以访问excel中的UNIQUE功能: 使用定义的变量Found和l

我正在尝试在vba中复制和粘贴列的唯一值。挑战在于:excel没有固定的位置,位置可以根据数据进行更改。从图中可以看出,我想获取A列的数量(abs)的唯一值,然后将其粘贴到B列上,除此之外,我不想接触A列中的数量。在数量和绝对数量之间有两个空单元格。金额和绝对金额都是动态的

这里

如上所述,这些表是动态的。如果金额的数量变大,则金额将添加一个新行,并且金额(abs)始终保持两个空单元格之间的距离。有什么建议可以帮助你吗

如果您可以访问excel中的
UNIQUE
功能:
  • 使用定义的变量
    Found
    lr
  • UNIQUE
    功能输出到右侧,以消除重复
  • 通过值传输清除公式/溢出范围(
    range.value=range.value

  • Sub-Social_-Distance()
    
    将ws设置为工作表:设置ws=ThisWorkbook.Sheets(“Sheet2”)”您可以使用
    RemovedUpplicates()
    范围
    对象的方法:

    Sub Test()
        With Worksheets("MySheetName") ' change "MySheetName" to your actual sheet name
            With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
                With .Range(.Find(What:="Amount(ABS)", LookIn:=xlValues, LookAt:=xlWhole).Offset(1), .Cells(.Count))
                    .Offset(, 1).Value = .Value
                    .Offset(1).RemoveDuplicates Columns:=1, Header:=xlNo
                End With
            End With
        End With
    End Sub
    

    它只是复制和粘贴,而不是删除重复项。它根据您的要求对数据集进行操作,如您的问题所示:您是否这样尝试过?是的,我尝试过,它只是复制整个范围并粘贴,而不是删除重复项,从你在问题中给出的数据布局开始,运行我的代码,我得到了复制/粘贴和删除重复项的结果。所以,要么你的实际数据布局与你展示的不一样,要么你没有运行我的代码。我已经更新了数据集,我的想法是从j列复制到Q列。我已经更改了偏移量(,7),但不起作用。
    Sub Test()
        With Worksheets("MySheetName") ' change "MySheetName" to your actual sheet name
            With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
                With .Range(.Find(What:="Amount(ABS)", LookIn:=xlValues, LookAt:=xlWhole).Offset(1), .Cells(.Count))
                    .Offset(, 1).Value = .Value
                    .Offset(1).RemoveDuplicates Columns:=1, Header:=xlNo
                End With
            End With
        End With
    End Sub