2010-06-16 100 views
2

如何比较两个Excel表并确定哪个列丢失?比较两个Excel表

(我想比较与片B从片A的国家的名单,然后标记该国缺少)

注意:他们是按随机顺序。

+0

可能的复制:http://stackoverflow.com/questions/1500153/find-the-differences-between-2-excel-worksheets/1500573#1500573 – hawbsl 2010-06-16 12:45:58

回答

4

您可以在Excel工作表中使用VLOOKUP函数来帮助查找其他工作表中的“缺失”数据。例如,采取以下两个工作表:

Sheet1 
------ 
     A   B   C 
1  aa 
2  bb 
3  cc 
4  dd 

Sheet2 
------ 
     A   B   C 
1  aa 
2  bb 
3  dd 

添加以下公式对细胞在SheetB1和通过细胞B4向下拖动式:

=IF(ISERROR(VLOOKUP(A1,Sheet2!$A$1:$A$3,1,FALSE)),"MISSING FROM OTHER SHEET","") 

Sheet1应说明,从另一片缺少B列项,像这样:

Sheet1 
------ 
     A   B      C 
1  aa 
2  bb 
3  cc   MISSING FROM OTHER SHEET 
4  dd 
0

您可以在Excel中使用ADO

Dim cn As Object 
Dim rs As Object 
Dim strFile As String 
Dim strCon As String 
Dim strSQL As String 
Dim s As String 
Dim i As Integer, j As Integer 

''This is not the best way to refer to the workbook 
''you want, but it is very conveient for notes 
''It is probably best to use the name of the workbook. 

strFile = ActiveWorkbook.FullName 

''Note that if HDR=No, F1,F2 etc are used for column names, 
''if HDR=Yes, the names in the first row of the range 
''can be used. 
''This is the Jet 4 connection string, you can get more 
''here : http://www.connectionstrings.com/excel 

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _ 
    & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" 

''Late binding, so no reference is needed 

Set cn = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.Recordset") 


cn.Open strCon 

''Query example: 
strSQL = "SELECT Country " _ 
     & "FROM [Sheet1$] a " _ 
     & "WHERE Country NOT IN " _ 
     & "SELECT Country FROM [Sheet2$]" 


''Open the recordset for more processing 
''Cursor Type: 3, adOpenStatic 
''Lock Type: 3, adLockOptimistic 
''Not everything can be done with every cirsor type and 
''lock type. See http://www.w3schools.com/ado/met_rs_open.asp 

rs.Open strSQL, cn, 3, 3 

If rs.Count>0 Then 
    MsgBox rs.GetString 
End If 

也可以使用CopyFromRecordset快速将记录集写入工作表。

0

解决方案取决于涉及的行数以及需要执行此操作的次数,以及您希望如何显示信息。

如果你没有很多国家,你需要这样做只有一次,最快的解决方法是:

  • 复制两列到一个临时表。
  • 按字母顺序对两列进行排序。
  • 手动通过它们并找出差异。

如果你只需要做一次,但有很多国家,vlookup选项是最快的。

如果您需要重复此过程很多次,并且您需要在某处使用该列表(即在其他表单中),那么您可以使用更复杂的解决方案,包括两个额外的查找列和透视表。但是在那个时候,我会考虑将它移动到更易于管理的地方,比如一个小型数据库。

0

我使用以下独家软件。
[Excel Diff - http://www.suntrap-systems.com/ExcelDiff/]

下面还有其他的软件站点。
[http://www.softpedia.com/]

+1

来自appliedalgo.com的DataExplorer - 您可以比较来自csv,Excel甚至结果的结果集从任何SQL查询(因此,数据或模式,#行/列......)针对MySQL,Microsoft SQL,Firebird设置。它们也支持不精确匹配 - 数值%差异阈值。对于字符串数据,模糊相似性度量。然而,有一个价格标签 - http://www.youtube.com/watch?v=Se0wt7mSkxM如果你的老板不想付钱,请查看这个链接:http://www.wikihow.com/Compare - 数据功能于Excel中 – 2014-01-02 09:49:21

0

我发现,在Excel中的某些版本是比较文件的功能 - 但通常是禁用的,但是instaled。有一天,我偶然发现如何使用它。

如果您instaled TortoiseSVN的(真的): - 选择Excel文件在文件管理器 比较 - 打开上下文菜单,然后选择TortoiseSVN> DIFF - 它打开的Excel中的“比较模式”