【问题标题】:VBA Excel-How to remove duplicates based on three columnsVBA Excel-如何根据三列删除重复项
【发布时间】:2020-04-04 18:55:47
【问题描述】:

我想根据 Excel 表格中的三列删除重复行。 当我将列作为直接值传递给数组时,例如示例列 1、61 和 122,它可以正常工作,如下面的代码所示:

cur.Range("data[#All]").RemoveDuplicates Columns:=Array(1, 61, 122), Header:=xlYes

但是当我尝试通过在标题中查找列号来动态传递数组中的列值时,它既不会引发任何错误,也不会删除重复项 下面的代码是传递列的动态代码

Set employeeCell = cur.Range("1:1").Find(What:="employee id") Set customerCell = cur.Range("1:1").Find(What:="customer") Set dateCell = cur.Range("1:1").Find(What:="date")
cur.Range("data[#All]").RemoveDuplicates Columns:=Array(employeecell.column,customercell.column, datecell.column), Header:=xlYes

请在这方面提供帮助。我想通过查找它们各自的列号来动态删除基于三列的重复项。

【问题讨论】:

    标签: excel vba duplicates


    【解决方案1】:

    尝试使用每列的ListColumn.Index

    Dim dataTable as ListObject
    Set dataTable = cur.ListObjects("data")
    
    Dim employeeIndex as Long
    employeeIndex = dataTable.ListColumns("employee id").Index
    
    Dim customerIndex as Long
    customerIndex = dataTable.ListColumns("customer").Index
    
    Dim dateIndex as Long
    dateIndex = dataTable.ListColumns("date").Index
    
    dataTable.Range.RemoveDuplicates Columns:=Array(employeeIndex, customerIndex, dateIndex), _
                                     Header:=xlYes
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      相关资源
      最近更新 更多