Te copio una respuesta de un amigo, aun problema muy parecido al tuyo:
hola, Miguel Angel !
> Necesito ... desordenar ... un listado de palabras ordenado alfabeticamente, en forma aleatoria [...]
-> selecciona el rango del listado [puede ser de una o mas columnas] y...
la siguiente macro [espero que] 'hara' lo que necesitas ;)
si no 'te gusta' el orden 'resultante'... 'le repites' la macro... o vuelves a ordenar 'alfabetico' :))
saludos,
hector.
=== en un modulo de codigo 'normal' ===
Sub Des_Ordenar_Seleccion()
Dim Elementos As Long, Fila As Long, Ceros As String, _
Orden As New Collection, Temp
Application.ScreenUpdating = False
With Selection
Elementos = .Rows.Count
Ceros = String(Len(CStr(Elementos)), "0")
Do: On Error Resume Next
Temp = Int((Rnd * Elementos) + 1)
Orden.Add Temp, CStr(Temp)
Loop Until Orden.Count = Elementos
For Fila = 1 To Elementos
.Cells(Fila, 1) = Format(Orden.Item(Fila), Ceros) & .Cells(Fila, 1)
Next: .Sort Key1:=.Cells(1, 1), Order1:=xlAscending
For Fila = 1 To Elementos
.Cells(Fila, 1) = Mid(.Cells(Fila, 1), Len(CStr(Elementos)) + 1)
Next
End With
End Sub
Abraham