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

时间:2011-01-20 12:23:19

标签: excel compare

我将以excel术语解释这一点,这样可能会更清楚。

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

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

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

只有某些/某些行在2列之间是通用的。并且,列B不是列A的子集。列A具有额外的条目,列B也是如此。

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

我将如何实现这一目标?我正在尝试excel但是vlookup正在永远占据并且挂起。还有其他窗户/办公设施可以帮助我吗?如果它是一个宏,你可以给我一些脚本和建议来执行吗?

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

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

任何帮助都会很棒。

4 个答案:

答案 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 :(得分:1)

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

看到你有Excel,你可能有MS Access。将列加载到Access表中并使用JOIN进行解析将非常快速

答案 2 :(得分:1)

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

我总是在Excel 2007及更新版本的表格中工作,但会给出两种语法:

假设你有一个表,在“column1”和“column2”列中要比较的东西,检查Column1中的值是否存在于Column1中

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

或者,如果你有一个旧的学校数组,其中包含A和B列中的数据,那么在A中查找B中的值:

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

发生了什么 - 你正在寻找一列中当前行的值的完全匹配(0参数),在另一列中,并检查是否得到一个数值(是的是匹配)或不(不匹配)

答案 3 :(得分:0)

对两个列表进行排序并使用近似Vlookup(最后一个参数为True):这将非常快(二进制搜索),但您需要处理NoMatch情况:C列中的内容如下所示 =IF(B1=Vlookup(B1,$A$1:$A$69000,1,True),"Match","NoMatch")
并复制