两个Excel表格的比较
今天同事问我,有两个Excel表格,格式内容都差不多,但其中一个的条目比另一个多,现在要找出有差别的那些项,问我有啥简便方法。我想了想,好像没有唉,只能手工核对喽,一千多条记录,对起来也蛮累人的。

后来想想,没道理要这么麻烦的,应该有方法可以快速查找,可以前没用过,上网查查吧。一查还真有,就是利用Excel里自带的函数实现,网上那位给出的公式是这样的:

=IF(ISERROR(MATCH(B,Sheet1!B:B,0)),"false",INDIRECT("Sheet1!D"&MATCH(B,Sheet1!B:B,0)))

看了半天也没看懂,他说是看Excel的帮助的,那我们也去看看帮助吧。

原来都是些函数,IF函数的格式是IF(logical_test,[value_if_true], [value_if_false]),相当于IF语句,根据逻辑值再做操作。

ISERROR函数是一个判断函数,格式是ISERROR(value),当value为任意错误值(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!)时,返回值为TRUE,否则为FALSE。

MATCH函数是用来查找具体数值的,格式为MATCH(lookup_value,lookup_array,match_type),也就是要到”lookup_array”指定的范围内去查找”lookup_value”的数值,match_type是查找方式,可以取-1,0或1。如果为0,表示要查找和”lookup_value”相等的值。如果找到,则返回目标值的位置(而非数值本身);如果找不到,返回错误值#N/A。

INDIRECT函数是对单元格的引用,格式是INDIRECT(ref_text,a1),其中ref_text是要引用的单元格位置,比如A1;a1为一逻辑值,指明引用的类型。

 

 

 

这样说很难理解,举些小例子:

①MATCH函数

A                 B 
1   Product           Count 
2   Bananas            25 
3   Oranges            38 
4   Apples              40 
5   Pears                41

 

=MATCH(41,B2:B5,0)    返回值为41在B列内的位置:4(注意不是B4) 
=MATCH(39,B2:B5,0)    由于没有匹配的值,返回#N/A。

②ISERROR函数

ISERROR(4)=FALSE 
ISERROR(#N/A)=TRUE

 

③INDIRECT函数

A                  B 
1     数据                数据 
2     B2               1,333 
3    B3               45 
4    George         10 
5    5                 62

 

=INDIRECT($A$2)         单元格A2中的引用值(即B2的值)1,333 
=INDIRECT($A$4)         如果单元格B4有定义名”George”则返回B4的值10 
=INDIRECT(“B”&$A$5)    单元格A5的值赋予函数,即返回值为B5的值62

 

好了,回过头来看看给出的公式,总的是一个IF语句,对条件做一个判断,如果为真,则输出”false”;如果为假,则输出引用的单元格的内容。而这个判断语句就是要对两个sheet做比较,找出不同点。如果在另一个表格内找到了相同内容,返回值是一个数值,这时ISERROR函数会返回FALSE值,IF语句即执行INDIRECT函数,填写相关的单元格内容;如果在另一个表格内未找到相同内容,则返回值是#N/A,这时ISERROR函数会返回TRUE,IF语句即输出”false”。

作者原来的用途是要查找两个表格的相同点,然后把相同部分的内容贴到另一张表格内,而我同事只要找出不同点,所以我也就偷懒啦,只取一部分,即:

=ISERROR(MATCH(B,sheet1!B:B,0))

这样只做比较,返回TRUE或FALSE值,然后再排一下序,就可以找到不同的那些项啦^_^

注意函数里的参数,”B”代表单元格的位置,如果你是在B1单元格里填写该函数,这里就是B1;”sheet1”是同一个Excel表格里另一个sheet的名称,如果是不同的Excel表格,格式为[table]sheet1;B:B表示整个B列。当然,最方便的方法就是用鼠标点,会自动生成这些格式的。

像我今天用的最终公式就是这个:

=ISERROR(MATCH(C1,数据1513!H:H,0))