【发布时间】:2015-04-03 02:58:34
【问题描述】:
我有一个电子表格,其中包含与制表符分隔的文本文件的数据连接。文本文件是通过使用来自 SoftPerfect 的名为 NetScan 的程序的导出功能生成的。每个报告都是实时的,不包括来自当前未打开或未连接到网络的计算机的数据。这意味着较新的报告可能缺少旧报告所拥有的计算机,但它也可能包含已添加更多内存的计算机或其他类似内容的更新信息。
因此,在电子表格上,我可以刷新数据连接以从文本文件进行更新,但由于每次我以大量重复的计算机条目(整行可能或可能不完全重复)。我想合并这些行,以便每台计算机都有一行。
一小部分样本数据(全是假的) - 请注意,完整电子表格中有更多列,但此样本数据包含我计划过滤/合并的所有信息:
A B C D E F
IP Address Host Name MAC Address Response Time Dups Serial Number
192.168.1.110 CLT-001 XX:XX:XX:XX:XX:C5 0 ms 2 ABC123
192.168.1.174 CLT-001 XX:XX:XX:XX:XX:FE 5 ms 1 ABC123
192.168.1.110 CLT-001 XX:XX:XX:XX:XX:C5 1 ms 2 ABC123
192.168.1.138 CLT-004 XX:XX:XX:XX:XX:04 1 ms 2 DEF456
192.168.1.146 CLT-009 XX:XX:XX:XX:XX:8E 1 ms 2 GHI789
192.168.1.121 CLT-004 XX:XX:XX:XX:XX:04 1 ms 2 DEF456
192.168.1.146 NA XX:XX:XX:XX:XX:8E 1 ms 2 NA
192.168.1.152 CLT-005 XX:XX:XX:XX:XX:6B 1 ms 1 JKL012
序列号是识别唯一计算机的方法,但有时扫描无法获取 S/N(WMI 错误),在这种情况下,下一个最佳选择是 MAC 地址。 MAC 地址的问题在于,这些笔记本电脑中的大多数最终会在每台计算机上注册 2 台——一台用于有线,一台用于无线。
我尝试使用=COUNTIF(Row,ItemToCount)(即示例数据中的 E 列),但我不确定如何使用从中获得的信息。此外,整个事情都需要在 VBA 中完成,因此我可以将其包含在工作簿主工作表上的数据清理按钮中。我的目标是最终得到如下所示的数据:
A B C D E F
IP Address Host Name MAC Address Response Time Dups Serial Number
192.168.1.110 CLT-001 XX:XX:XX:XX:XX:C5 0 ms 1 ABC123
192.168.1.146 CLT-009 XX:XX:XX:XX:XX:8E 1 ms 1 GHI789
192.168.1.121 CLT-004 XX:XX:XX:XX:XX:04 1 ms 1 DEF456
192.168.1.152 CLT-005 XX:XX:XX:XX:XX:6B 1 ms 1 JKL012
我考虑的一个概念是使用响应时间来指示连接是有线还是无线,这对于我的目的应该足够准确。 0 或 1ms 表示有线,而 2ms 或更多表示无线。另一种选择是添加更多的 WMI 调用来识别网卡的类型,并在报告甚至到达导出的文本文件之前将它们过滤掉。
在这一点上,任何帮助将不胜感激。我在这些论坛上能找到的最接近的问题是Conditional Removal of Duplicates from Excel 问题。其他论坛(例如 mrexcel、excelforum 和 ozgrid)也没有任何明显的答案,尽管有很多帖子几乎都有类似的问题,以至于找到我要找的东西相当困难。谢谢!
【问题讨论】:
标签: excel merge duplicates vba