Ver Mensaje Individual
  #10 (permalink)  
Antiguo 14/01/2010, 12:31
Avatar de mrocf
mrocf
 
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: Dudas de excel

Hola! AndyDG

1º) Reemplaza el código anterior por este otro:
Código PHP:
Dim Celda As Rangeii As IntegerRng 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(Celda1)) 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(CeldaTo 1 Step -1
  
If IsNumeric(Mid(Celdaii1)) Then Exit For
Next ii
Cells
(65536Rng(1).Column).End(xlUp).Offset(1) = Left(Celdaii)
Cells(65536Rng(1).Column).End(xlUp).Offset(, 1) = _
  Right
(CeldaLen(Celda) - ii)

End Sub


Rem Separa texto de número
Private Sub LetNum()

For 
ii 1 To Len(Celda)
  If 
IsNumeric(Mid(Celdaii1)) Then Exit For
Next ii
Cells
(65536Rng(1).Column).End(xlUp).Offset(1) = Left(Celdaii 1)
Cells(65536Rng(1).Column).End(xlUp).Offset(, 1) = Mid(Celdaii20)

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