2014-04-25 2 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; 

여기가 이상하게 들릴 곳입니다.

반 환 변수 는 RemoveDuplicate 기능이 하지 어떤 중복을 찾았어요 경우 마지막 행이 을 사용 찾을 실패합니다.

사례 포인트 : 보고서 10701에 RemoveDuplicate 키크가있는 경우 총 1415 행 (1333 개)이 제거됩니다.이 보고서의 경우 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; 

, 중복을 제거한 후, 마지막 행 얻기 위해 (12 동일) trnsCount을 사용하고 있습니다 :

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

명백하게을 12 대신 Rows.Count을 사용해야하므로 올바르지 않습니다.

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

그래서, 단지에 선 위에 변경

관련 문제