从包含重复数据的Excel电子表格中删除行?

时间:2009-08-13 16:18:59

标签: excel vba duplicates spreadsheet

我有一个excel电子表格,大约有18k行和3列。我想将其用作Access数据库中的密钥。所以三列是

[IDKeyNumber]    [Name]    [Category]

问题是在某些地方IDnumber是重复的,因为该类别有两个类别代码(typeA& typeB)

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

所以我只想摆脱类别字段中包含此TYPEB的所有重复行/记录。

谢谢!

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

3 个答案:

答案 0 :(得分:4)

可以在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

答案 1 :(得分:3)

假设列是A,B和C.

  1. 添加列标题(id,name, 列上方的类别
  2. 按A&和A排序B.(如果你需要 保留排序顺序,见下文)
  3. 在D2中,将公式“= AND(A2 = A1,B2 = B1,C2 =“TypeB”)“
  4. 填写
  5. 使用AutoFilter仅选择 D为假的行。
  6. 根据需要进行复制和粘贴。
  7. 为了保留排序顺序,你需要另一列 - 让我们说E,因为我们使用D作为公式。在排序之前,将1放入E2,将2放入E3,并填写系列。您可以通过拖动增长手柄,或者将值实际放入D2和D3,使它们与填充的单元格相邻,然后双击增长手柄来完成此操作。菜单上的某个地方还有一个命令来执行此操作,但我不记得它的名称或位置。

答案 2 :(得分:1)

@ Carls建议或类似的东西是获得excel所需内容的最快捷方式。

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