2014-04-25 21 views
1

在我正在處理的報表上,SQL將數據轉儲到新的Excel表中後,我必須通過「事務編號」列檢查重複記錄,列AE(31)如果RemoveDuplicates找不到重複項,則Rows.Count無法計數行

這是代碼的一部分,用於統計使用的行,定義範圍,刪除重複項並在重新計數之後爲下一個函數定義新的範圍。

//Removed duplicate transactions 
int trnsCount = JobDataSheet.Rows.Count; 
trnsCount = JobDataSheet.Cells[trnsCount, 1].End(Excel.XlDirection.xlUp).Row; 
Excel.Range transRng = JobDataSheet.get_Range("A1:AE" + trnsCount); 
transRng.RemoveDuplicates(31); 

//Check if report has been run for 1 or multiple Jobs 
int MyCount = JobDataSheet.Rows.Count; 
MyCount = JobDataSheet.Cells[trnsCount, 1].End(Excel.XlDirection.xlUp).Row; 

這裏是事情變得奇怪。

的mycount的變量失敗找到最後一排用於如果的RemoveDuplicate功能並沒有找到任何重複。

案例的觀點: 報告10701總共有1415行(其中82是重複的),在刪除它們離開1333。對於本報告RemoveDuplicate踢,trnsCount觀看時正確地計算1415行和mycount的正確計算1333重複項刪除後的行。

報告14506總共有12行(0個副本),因此RemoveDuplicate不會從此報告中刪除行。對於此報告,正確觀看時trnsCount計算12行,但MyCount只計算1行。

任何想法?在您的變量trnsCount

回答

2

關注:

// trnsCount = Rows.Count 
int trnsCount = JobDataSheet.Rows.Count; 
// trnsCount = 12 
trnsCount = JobDataSheet.Cells[trnsCount, 1].End(Excel.XlDirection.xlUp).Row; 

隨後,刪除重複後,你使用trnsCount(等於12),以獲得最後一行:

MyCount = JobDataSheet.Cells[trnsCount, 1].End(Excel.XlDirection.xlUp).Row; 

,顯然這是不正確的,因爲您應該使用Rows.Count而不是12

所以,只要上面的行更改爲:

MyCount = JobDataSheet.Cells[MyCount , 1].End(Excel.XlDirection.xlUp).Row;