Dror tiene una hoja de trabajo que contiene bastantes datos. Es posible que los datos en una columna sean exactamente los mismos que los datos en otra columna, por lo que se pregunta si existe una manera fácil de eliminar cualquier columna duplicada dentro de la hoja de trabajo.

El primer paso, por supuesto, es averiguar si dos columnas son idénticas o no. Esto se puede determinar con bastante facilidad con una fórmula de matriz como la siguiente:

=AND(A1:A100=B1:B100)

(Recuerde que una fórmula de matriz se ingresa usando Shift + Ctrl + Enter.)

La fórmula compara todos los valores de las primeras 100 filas de las columnas A y B. Si son todos iguales, la fórmula devuelve VERDADERO. Si alguna de las celdas no coincide, la fórmula devuelve FALSO. Si el resultado es VERDADERO, puede eliminar una de las columnas porque son iguales.

Si desea algo que sea un poco más automático, lo que significa que la columna duplicada se elimina, entonces deberá usar una macro. Los siguientes pasos recorren todas las columnas de la hoja de trabajo y, comenzando con la columna más a la derecha, comparan todas las columnas. Si alguno es el mismo, independientemente de su orden en la hoja de trabajo, la macro le pregunta si desea eliminar la columna duplicada.

Sub DeleteDuplicateColumns()

Dim rngData As Range     Dim arr1, arr2     Dim i As Integer, j As Integer, n As Integer

On Error Resume Next     Set rngData = ActiveSheet.UsedRange     If rngData Is Nothing Then Exit Sub

n = rngData.Columns.Count

For i = n To 2 Step -1         For j = i - 1 To 1 Step -1             If WorksheetFunction.CountA(rngData.Columns(i)) <> 0 And _               WorksheetFunction.CountA(rngData.Columns(j)) <> 0 Then                 arr1 = rngData.Columns(i)

arr2 = rngData.Columns(j)

If AreEqualArr(arr1, arr2) Then                     With rngData.Columns(j)

'mark column to be deleted                         .Copy                         If MsgBox("Delete marked column?", vbYesNo) _                           = vbYes Then                             rngData.Columns(j).Delete                         Else                             'remove mark                             Application.CutCopyMode = False                         End If                     End With                 End If             End If         Next j     Next i

End Sub
Function AreEqualArr(arr1, arr2) As Boolean     Dim i As Long, n As Long     AreEqualArr = False     For n = LBound(arr1) To UBound(arr1)

If arr1(n, 1) <> arr2(n, 1) Then             Exit Function         End If     Next n     AreEqualArr = True End Function

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (5674) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Deleting_Duplicate_Columns [Eliminando Columnas Duplicadas].