2010-06-16 125 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中的「比較模式」