Я мог бы проверить и пересмотреть код следующим образом:
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
Итак, вам нужно удалить строки, которые имеют дублирующую информацию (которые могут появляться в любом порядке)? Имеет ли значение, какую строку вы держите? Если да, то как вы знаете, что должно оставаться и что должно идти? (♪ ♫ Давай и дайте мне знать ♪ ♫) – BruceWayne
@BruceWayne, если он останется, это будет проблемой, но если это произойдет ... Любое тело получило арахис. Дан перепутал мои цитаты. –
Лист может содержать около 2W + строк, я просто хочу сохранить только одну строку, независимо от того, «AB» или «BA», могут быть тысячи случаев (например, «AB» ---- «BA» или «AB», LN "----" NL ". Я пытался использовать VBA, чтобы справиться с этим, купить не удалось – RayYu