كما قلت انه يقوم بمسح كل شيئ
جرب ان تعدل الكود كما يلي وذلك باضافة سطر بسيط بين next و next لان في كل دورة ينقص عدد الاعمدة مقدار واحد
Sub Deletecols()
Dim rng As Range
Dim i As Integer, j As Integer
Dim counter As Long, numcolumns As Long
With ActiveSheet
Set rng = Range(Cells(1, 1), Cells(ActiveSheet.UsedRange.Rows.Count, _
ActiveSheet.UsedRange.Columns.Count))
End With
numcolumns = rng.Columns.Count
For i = 1 To numcolumns
For j = i + 1 To numcolumns
numcolomn = numcolomn - 1
If rng.Cells(j) Like rng.Cells(i) Then
rng.Cells(j).EntireColumn.Delete
End If
Next
numcolomn = numcolomn - 1
Next