比较长度不等的列的匹配和差异

问题描述 投票:0回答:5

我会用 Excel 术语解释这一点,这样可能会更清楚。

我有一个包含 2 列的 Excel 工作表。

A 列有 69,000 行。 B 列有 49,000 行。

A栏有我们完整的产品清单 B 列有制造商 1 的产品列表

两列之间只有某些/某些行是公共的。而且,B 列不是 A 列的子集。A 列有额外的条目,B 列也有。

我需要知道 B 列中的哪些行与 A 列相同 B 列中的哪些行与 A 列不常见

我如何实现这一目标?我正在尝试 excel,但 vlookup 需要很长时间并挂起。还有其他 Windows/Office 实用程序可以帮助我吗?如果它是一个宏,您能给我执行它的脚本和建议吗?

我也可以访问Linux机器,并且我熟悉这些工具。

我可以将此信息传输到文本文件,我可以运行一些 sed 或 awk 脚本来打印输出吗?

任何帮助都会很棒。

excel compare
5个回答
2
投票

使用

MATCH()
函数,如果有结果,它会给你一个数字,如果没有结果,它会给你#NA。

我总是在 Excel 2007 及更高版本中使用表格,但会给出两种语法:

假设您有一个表,其中“column1”和“column2”列中有要比较的内容,检查Column2中的值是否存在于Column1中

=ISNUMBER(MATCH(Table1[[#This Row],[Column2]],[Column1],0))

或者,如果您有一个老式数组,其中 A 列和 B 列中包含数据,则在 A 中查找 B 中的值:

=ISNUMBER(MATCH(Sheet1!$B2,Sheet1!$A$2:$A$11,0))

发生了什么 - 您正在寻找一列中当前行的值与另一列中的值的精确匹配(0 参数),并检查是否获得数值(是的,有匹配),或者不(不匹配)


1
投票

这在 Unix 或 Linux 上非常简单。首先将您公司的所有产品放入一个文件中,将其他公司的所有产品放入另一个文件中。我将它们称为 FileA 和 FileB。

对它们进行排序。

$ sort -u FileA > temp_file
$ mv temp_file FileA

$ sort -u FileB > temp_file
$ mv temp_file FileB

两个文件共有的产品。 。 .

$ comm -12 FileA FileB

FileB独有的产品。 。 .

$ comm -13 FileA FileB

1
投票

我很惊讶 VLOOKUP 很慢/不可靠,70'000 行不算什么。你确定你的公式正确吗?

既然您有 Excel,那么您可能也有 MS Access。将列加载到 Access 表中并使用 JOIN 进行解析会非常快


0
投票

对两个列表进行排序并使用近似 Vlookup(最后一个参数 True):这将非常快(二分搜索),但您需要处理 NoMatch 情况:C 列中类似的内容

=IF(B1=Vlookup(B1,$A$1:$A$69000,1,True),"Match","NoMatch")

并向下复制


0
投票

我最近遇到了一个很棒的在线工具https://datadiffer.com/,它非常适合比较 Excel 中的两列。只需将数据保存为txt文件并上传,您就可以快速查看每个文件的独特之处和共同点。它非常易于使用,您甚至可以下载比较结果。对于任何需要进行数据分析的人来说,这都非常方便!

© www.soinside.com 2019 - 2024. All rights reserved.