比较匹配和不同长度的列的长度

我将以excel的forms解释这个问题,所以可能会更清楚。

我有一个2列的Excel表。

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

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

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

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

我将如何实现这一目标? 我正在尝试擅长,但这种方法是永久挂断的。 有没有其他的Windows / Office工具可以帮助我? 如果它的macros,请给我脚本和build议来执行它?

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

我可以将这个信息传输到一个文本文件/ s,我可以运行一些sed或awk脚本打印输出?

任何帮助将是伟大的。

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

sorting他们。

$ 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 

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

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

使用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参数),并检查您是否获得数值(是的,匹配),或不(不匹配)

对这两个列表进行sorting,并使用近似Vlookup(最后一个参数为True):这将是非常快的(二进制search),但你需要处理NoMatch的情况:类似于C列
=IF(B1=Vlookup(B1,$A$1:$A$69000,1,True),"Match","NoMatch")
并抄下来