14/01/2010, 12:31
|
| | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 9 meses Puntos: 88 | |
Respuesta: Dudas de excel Hola! AndyDG
1º) Reemplaza el código anterior por este otro: Código PHP: Dim Celda As Range, ii As Integer, Rng As Range
Sub Ordenar()
Application.ScreenUpdating = False
Set Rng = [AA:AB]: Rng.ClearContents
Rem Desglosa tipos de teléfonos
For Each Celda In Selection
If IsNumeric(Left(Celda, 1)) Then
NumLet
Else
LetNum
End If
Next Celda
Rem Ordena
Rng.Sort Key1:=Rng(3), Order1:=xlAscending, _
Key2:=Rng(4), Order2:=xlAscending
With Selection
.NumberFormat = "@"
.Value = Evaluate("transpose(transpose(" & _
Rng(1).Resize(Selection.Rows.Count).Address & " & " & _
Rng(1).Offset(, 1).Resize(Selection.Rows.Count).Address & "))")
End With
Rng.Delete
Application.ScreenUpdating = True
End Sub
Rem Separa número de texto
Private Sub NumLet()
For ii = Len(Celda) To 1 Step -1
If IsNumeric(Mid(Celda, ii, 1)) Then Exit For
Next ii
Cells(65536, Rng(1).Column).End(xlUp).Offset(1) = Left(Celda, ii)
Cells(65536, Rng(1).Column).End(xlUp).Offset(, 1) = _
Right(Celda, Len(Celda) - ii)
End Sub
Rem Separa texto de número
Private Sub LetNum()
For ii = 1 To Len(Celda)
If IsNumeric(Mid(Celda, ii, 1)) Then Exit For
Next ii
Cells(65536, Rng(1).Column).End(xlUp).Offset(1) = Left(Celda, ii - 1)
Cells(65536, Rng(1).Column).End(xlUp).Offset(, 1) = Mid(Celda, ii, 20)
End Sub
2º) Selecciona el rango a ordenar
3º) Ejecuta la macro llamada Ordenar
Comenta, por favor, como te he ido, ¿si?.
Saludos, Cacho.
Última edición por mrocf; 15/01/2010 a las 07:21 |