【发布时间】:2020-08-03 08:03:43
【问题描述】:
关于 Stack 的第一个问题,但不是我第一次访问!
基本上我有这个庞大的 Excel 数据库(>24 000 行,从不同的表合并)我已经工作了几个星期,现在我已经完成了添加新条目,我必须通过删除大量重复项来清理它.
数组/表的结构如下:
+---------+-------+--------------------+-------------+--------------------+
| Company | Name | Address | Phone | Email |
+---------+-------+--------------------+-------------+-----------+--------+
| Baij&Co | Steve | 458 Preston avenue | 4156854789 | steve@baij&co.com |
我确实搜索过常规方法,但它们并不能完全回答我的问题,例如:
- 使用“删除重复项”Excel 按钮,选择所有列以确保我只保留唯一值
- 使用过滤方法识别重复项,然后将其删除。
但是,我的目标是删除给定行包含最少信息的重复项,如下例所示:
+--------- +-------+--------------------+-------------+--------------------+
| Company | Name | Address | Phone | Email |
+--------- +-------+--------------------+-------------+--------------------+
| Baij&Co | Steve | (blank) | 4156854789 | steve@baij&co.com |
| Baij&Co | Steve | (blank) | (blank) | steve@baij&co.com |
| Baij&Co | Steve | 458 Preston avenue | 4156854789 | steve@baij&co.com |
在这里,我想删除第一行和第二行,因为它们包含的关于同一联系人的信息较少(缺少地址和电话条目)。 这有意义吗..?
我只知道 VBA 的基础知识(例如创建用户表单以添加新联系人并在正确的单元格中填写输入的信息),但我对高级算法感到很困惑。
我只知道 VBA 相关功能无法自定义,除了选择我要删除重复的列:
Sheets("Database").Range("ContactsTable").RemoveDuplicates Columns:=1:15, Header:=xlNo
有什么想法吗?
【问题讨论】:
-
先对数据进行排序,让空白排到底部,然后只选择一两列来测试重复项。
-
您可以添加一列,计算为每个联系人填充了多少个单元格,然后按联系人和计数(降序)排序,然后删除联系人的重复数据。
标签: excel vba duplicates conditional-statements