我将以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脚本来打印输出吗?
任何帮助都会很棒。
答案 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")
并复制