如果RemoveDuplicates找不到重复项,Rows.Count将无法对行进行计数

在我正在处理的报告中,SQL将数据转储到新的Excel表单后,我必须通过“交易编号”列AE(31)列检查重复logging,

这里是代码的一部分,用来统计使用的行,定义范围,删除重复项和重新计数后,为下一个函数定义一个新的范围。

//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; 

这里是奇怪的地方。

如果 RemoveDuplicate函数没有find任何重复项,MyCountvariables将无法find最后一行。

举例:报表10701总共有1415行(其中82个是重复的)RemoveDuplicate踢在一个删除他们离开1333.对于此报表,trnsCount正确观看时计算1415行和MyCount正确计算1333行后重复已被删除。

报表14506共有12行(0个副本),因此RemoveDuplicate不会从此报表中删除行。 对于这个报表,trnsCount正确的计算了12行,而MyCount只计算了1行。

有任何想法吗?

注意你的variablestrnsCount

 // 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;