2

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

[IDKeyNumber]    [Name]    [Category]

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

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

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

谢谢!

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

4

3 回答 3

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
于 2009-08-14T10:15:45.440 回答
3

假设列是 A、B 和 C。

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

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

于 2009-08-13T16:27:05.303 回答
1

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

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

于 2009-08-14T04:18:37.710 回答