2016-11-03 1 views
0

에 엑셀 행 데이터를 삭제 둘 중 하나만 갖고 싶습니다. 어떻게 들으, 다른 하나를 제거는 어떻게 다음과 같은 엑셀 데이터가 이러한 경우

+0

그래서, 당신은 (즉, 임의의 순서로 나타날 수 있습니다) 중복 된 정보가 행을 제거해야합니까? 어떤 행을 지키는 것이 중요합니까? 그렇다면 어느 것이 머물러야하고 어떤 것이 어느 것을 가져야하는지 어떻게 알 수 있습니까? (♪♪ 나에게 알려줘 ♪♪ ♫) – BruceWayne

+1

@BruceWayne 머물면 문제가 되겠지만, 간다면 ... 어떤 몸에도 땅콩이있어. 댕이 내 따옴표를 섞어. –

+0

시트에 약 2W + 행이 포함될 수 있습니다. "AB"또는 "BA"에 관계없이 한 행만 유지하려는 경우 "AB"---- "BA"또는 " LN "----"NL ". VBA를 사용하여 거래를 시도했는데 – RayYu

답변

0

내가 테스트하고 다음과 같이 코드를 수정할 수 :

Option Explicit 

Sub MAIN() 
    Dim dataRng As Range, col As Range, cell As Range 

    With Worksheets("myWorksheetName") '<--| change "myWorksheetName" to your actual worksheet name 
     With .UsedRange 
      Set dataRng = .Cells 
      With .Offset(1, .Columns.Count + 1).Resize(.Columns.Count, .Rows.Count) 
       .Value = Application.Transpose(dataRng.Value) 
       For Each col In .Columns 
        col.Sort key1:=col.Cells(1, 1), order1:=xlAscending, Header:=xlNo 
        col.Cells(1, 1).Offset(-1) = Replace("|" & Join(Application.Transpose(col.Value), "|") & "|", "||", "") 
       Next col 

       For Each cell In .Rows(1).Offset(-1, 1).Resize(, .Columns.Count - 1).Cells 
        If WorksheetFunction.CountIf(.Rows(1).Offset(-1).Resize(, cell.Column - .Columns(1).Column), cell.Value) > 0 Then .Offset(, -1).Cells(cell.Column - .Columns(1).Column, 1) = 1 
       Next cell 
       .Offset(-1).Resize(.Rows.Count + 1).ClearContents 
      End With 

      With .Resize(, .Columns.Count + 1) 
       .AutoFilter Field:=.Columns.Count, Criteria1:=1 
       .Resize(, 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
      End With 
     End With 
    End With 
End Sub 
+0

스크립트가 7 행으로 실행되면"error 1004 "와 같은 오류가 발생합니다. – RayYu

+0

줄 번호가 없습니다. 오류 번호 및 설명과 함께 오류가 발생하는 줄을 입력하십시오. – user3598756

+0

이 줄은 ".Offset (1, .Counts.Count + 1) .Resize (.Columns.Count, .Rows.Count)"오류 "오류 1004"응용 프로그램 정의 또는 개체 정의 오류 "", 워크 시트 이름을 바 꾸었습니다 – RayYu