2016-11-03 1 views
0

У меня есть данные Excel, как показано ниже:Как удалить строки данных Excel в таком случае

----|----|----|-- 
     A   B 
----|----|----|-- 
     C D 
----|----|----|-- 
     B A 
----|----|----|-- 

и в моей потребности Первая строка «AB», равна третьей строке «BA», я просто хочу сохранить только один из них. Как удалить другую, THx

+0

Итак, вам нужно удалить строки, которые имеют дублирующую информацию (которые могут появляться в любом порядке)? Имеет ли значение, какую строку вы держите? Если да, то как вы знаете, что должно оставаться и что должно идти? (♪ ♫ Давай и дайте мне знать ♪ ♫) – BruceWayne

+1

@BruceWayne, если он останется, это будет проблемой, но если это произойдет ... Любое тело получило арахис. Дан перепутал мои цитаты. –

+0

Лист может содержать около 2W + строк, я просто хочу сохранить только одну строку, независимо от того, «AB» или «BA», могут быть тысячи случаев (например, «AB» ---- «BA» или «AB», 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-й строке, он выдает ошибку типа« ошибка 1004 » – RayYu

+0

У меня нет номеров строк, введите строку, которая выдает ошибку вместе с номером ошибки и описанием. – user3598756

+0

эта строка «С .Offset (1, .Columns.Count + 1) .Resize (.Columns.Count, .Rows.Count)», ошибка «Ошибка 1004», определяемая приложением или объектная ошибка », я заменил имя листа – RayYu

Смежные вопросы