2012-09-07 2 views
3

몇 가지 검색을 해봤습니다. 찾은 함수가 예상대로 작동하지 않는 것 같습니다. 잘못된 매개 변수를 전달하고 있습니까?C# Excel 왜 전체 행에 apposed으로 셀에서 중복을 제거합니까?

Excel 스프레드 시트에서 C#을 사용하여 중복 된 행 항목을 모두 제거하려고합니다. 그냥 전체 행에보고 나란히 놓이는으로 중복 된 셀 값이 행을 제거하면됩니다 보인다 무엇

Range theRange = workSheet.UsedRange as Range; 
theRange.RemoveDuplicates(XlYesNoGuess.xlYes); 

.

내가 뭘 잘못하고 있니? Excel로 이동하여 데이터 >> 중복 제거를 클릭하고 모든 열을 선택하면 원하는 결과를 얻을 수 있습니다. 이 일을 프로그래밍 방식으로하는 방법은 무엇입니까?

Removeduplicates 그래서 나는

+0

나도 알아,하지만 난 그것을 해결하는 방법을 아무 생각이 :

다음 코드

열 하나에서 중복 제거에 관해서, 나를 위해 작동합니다. 데이터 >> 중복 제거 >>로 이동하면 집합에 필터를 설정하므로 각 행이 별도의 데이터 엔터티 (레코드) 인 중복 집합을 제거 할 수 있습니다. 따라서 예상대로 작동합니다. 어쩌면 데이터 세트를 먼저 선택하는 루틴을 따라야 할 필요가 있을까요? – Juliusz

답변

3

귀하의 질문은 하루 종일 나에게 도청 된 루프 등 모든 종류의 싶지 않아 오히려 빠른 것 같다, 나는 마침내 그것을 알아 낸!

중복을 제거 할 열 번호를 지정해야합니다.

범위를 이미 지정 했어도 여전히 열을 지정해야합니다. 이 설명은 선택 사항임을 명시하고이를 공백으로 남겨두면 전체 범위가 중복으로 검색됩니다. 이것은 사실이 아닙니다.

이 설명은 개체 배열 일 수 있다고 말하면서 오해의 소지가 있습니다. 열을 지정할 수있는 유일한 방법은 숫자로, 정수 배열을이 메서드에 전달하면 런타임 오류가 발생합니다.

이 메서드에 전달하는 두 번째 부울 매개 변수는 예상대로 작동하며 열의 첫 번째 셀에 제목이 들어 있음을 선언 할 수 있습니다. 있다는 이유

using System.Runtime.InteropServices; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace RemoveDupes 
{ 
    class Program 
    { 
     static void Main() 
     { 
      var excel = new Excel.Application(); 
      var workbook = excel.Workbooks.Open(@"C:\Test\Test.xlsx"); 
      Excel.Worksheet worksheet = workbook.Sheets[1]; 

      var usedRange = worksheet.UsedRange; 

      usedRange.RemoveDuplicates(1); 

      workbook.Close(true); 

      Marshal.ReleaseComObject(excel); 
     } 
    } 
}