2010-05-20 59 views
0
Dim LastRow_1 as Integer 
Dim LastCol_1 as Integer 
Dim Data_1 as Range 
Dim LastRow_2 as Integer 
Dim LastCol_2 as Integer 
Dim Data_2 as Range 

Dim Sh_1 as Worksheet 
Dim Sh_2 as Worksheet 

Dim X As Long 
Dim Y As Long 
Dim C_1 as Range 
Dim C_2 as Range 

Set Sh_1 = Activeworkbook.Sheets("Sheet1") 
Set Sh_2 = Activeworkbook.Sheets("Sheet2") 

LastRow_1 = Sh_1.Range("A65535").End(xlup).Row 
LastCol_1 = Sh_1.Range("IV1").End(xltoLeft).Column 
Set Data_1 = Sh_1.range("A1").Resize(LastRow_1,LastCol_1) 

LastRow_2 = Sh_2.Range("A65535").End(xlup).Row 
LastCol_2 = Sh_2.Range("IV1").End(xltoLeft).Column 
Set Data_2 = Sh_2.range("A1").Resize(LastRow_2,LastCol_2) 

For Each C_1 in Data_1 
    For Each C_2 In Data_2 
     If C_2 = C_1 then 
     'found a cell on sheet2 that matched cell in sheet1 
     'now do what you need to do 
     End if 
    Next C_2 
Next C_1 
+0

你的功能目標是什麼? – Glennular 2010-05-20 14:57:07

回答

0

你可以做這樣的事情:

Excel.Application app = new Excel.Application(); 
app.Visible = true; 
Excel.Workbooks workbooks = m_app.Workbooks; 
Excel.Workbook workbook = workbooks.Open(fileName); 
workbook.Activate(); 
Excel.Sheets sheets = workbook.Sheets; 
Excel.Worksheet sheet = sheets(1); 
Excel.Range range = sheet.UsedRange; 

// values will be an multi dimensional array of objects 
object values = range.Value; 

Marshal.ReleaseComObject(range); 
Marshal.ReleaseComObject(sheet); 
Marshal.ReleaseComObject(sheets); 
workbook.Close(false); 
Marshal.ReleaseComObject(workbook); 
workbooks.Close(); 
Marshal.ReleaseComObject(workbooks); 
app.Quit(); 
Marshal.ReleaseComObject(app); 

這將在一張紙上閱讀,那麼只需調用相同的代碼爲其他表,然後就可以作爲比較值:

AreEqual(values(1,1), values2(1, 1)); 

哪裏AreEqual是你寫的方法是比較正常的事情佔空值和數據類型等

順便說一句,我寫上面的代碼爲C #就像問題標題中說的那樣,但是我看到標籤是VB.Net,但是如果你想將它作爲VB.Net使用一些轉換器自動轉換它,如http://www.developerfusion.com/tools/convert/vb-to-csharp/或類似。

1

將工作表的內容選擇到數據表中,並且可以使用DataRelations對象來比較兩個數據表。 您也可以使用兩個數據表的合併來識別差異。