【问题标题】:Delete rows from an Excel spreadsheet that contain duplicate data?从包含重复数据的 Excel 电子表格中删除行?
【发布时间】:2010-11-19 08:55:07
【问题描述】:

我有一个 18k 行和 3 列的 Excel 电子表格。我想将其用作 Access 数据库中的键。所以这三列是

[IDKeyNumber]    [Name]    [Category]

问题是在某些地方 ID 编号重复,因为该类别有两个类别代码(typeA 和 typeB)

我真正需要知道的只是删除 excel 电子表格中的每个“行/记录”,其中 ID#s 和名称匹配(如匹配另一条记录以隔离重复)和 Category = TypeB。

所以我只想删除所有在类别字段中具有此 TYPEB 的重复行/记录。

谢谢!

IA:某些行或记录有一个有效的 TypeB 类别,不是重复的,这就是为什么我需要 record = record 除了类别想法...谢谢

【问题讨论】:

    标签: excel vba duplicates spreadsheet


    【解决方案1】:

    可以在 Excel 中使用 ADO 和 SQL,例如:

    Dim cn As Object
    Dim rs As Object
    
    strFile = Workbooks(1).FullName
    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
        & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
    
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    
    cn.Open strCon
    
    strSQL = "SELECT id, name, max(type) AS type FROM [Sheet1$] GROUP BY id, name"
    
    rs.Open strSQL, cn
    
    For i = 0 To rs.Fields.Count - 1
        Sheets("Sheet2").Cells(1, i + 1) = rs.Fields(i).Name
    Next
    
    Sheets("Sheet2").Cells(2, 1).CopyFromRecordset rs
    

    【讨论】:

      【解决方案2】:

      假设列是 A、B 和 C。

      1. 添加列标题(id、name、 类别)在列上方
      2. 按 A 和 B 排序。(如果需要 保留排序顺序,见下文)
      3. 在 D2 中,输入公式“=AND(A2 = A1, B2 = B1, C2 = "TypeB")"
      4. 填写
      5. 使用自动筛选仅选择 D 为假的行。
      6. 根据需要复制和粘贴。

      为了保留排序顺序,您需要另一列 - 假设 E,因为我们使用 D 作为公式。排序前将1放入E2,将2放入E3,并填写系列。您可以通过拖动增长手柄或将值实际放入 D2 和 D3 中以使它们与填充的单元格相邻,然后双击增长手柄来执行此操作。菜单上的某处还有一个命令可以执行此操作,但我不记得它的名称或位置。

      【讨论】:

        【解决方案3】:

        @Carls 建议或类似内容是在 excel 中获得所需内容的最快方法。

        另一种选择可能是在 Access 中设置表并设置所有主键。然后只需导入数据并忽略由此产生的任何错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-19
          相关资源
          最近更新 更多