Depende del caso de uso, pero la lógica que yo sugeriría (sin usar VBa) es copiar cada columna en una sola columna larga, y luego simplemente ordenar alfabéticamente.
Así que empieza como
Copiar y pegar en una sola columna
Añada una nueva fila y un título de encabezamiento haciendo clic en Filter
(en el Data
cinta, Sort and Filter
tabulador)
Ordenar de menor a mayor
Simplemente borre las otras filas.
Si copiar todas las columnas en una sola columna requiere demasiado tiempo, consulte https://stackoverflow.com/questions/4480227/how-to-consolidate-data-from-multiple-excel-columns-all-into-one-column
Sub MakeOneColumn()
Dim vaCells As Variant
Dim vOutput() As Variant
Dim i As Long, j As Long
Dim lRow As Long
If TypeName(Selection) = "Range" Then
If Selection.Count > 1 Then
If Selection.Count <= Selection.Parent.Rows.Count Then
vaCells = Selection.Value
ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1)
For j = LBound(vaCells, 2) To UBound(vaCells, 2)
For i = LBound(vaCells, 1) To UBound(vaCells, 1)
If Len(vaCells(i, j)) > 0 Then
lRow = lRow + 1
vOutput(lRow, 1) = vaCells(i, j)
End If
Next i
Next j
Selection.ClearContents
Selection.Cells(1).Resize(lRow).Value = vOutput
End If
End If
End If
End Sub
¿Cómo puedo añadir VBA en MS Office?