Macro para ordenar por última columna

22/09/2005 - 22:15 por FeCel | Informe spam
Necesito ayuda para hacer una macro que ordene una planilla en forma
descendente, por la última columna. La planilla puede tener un número
variable de filas y de columnas.
De antemano gracias.
FeCel

Preguntas similare

Leer las respuestas

#1 KL
22/09/2005 - 22:40 | Informe spam
Hola FeCel,

Prueba este macro que asume que tu tabla empieza en la celda [A1] y tiene
encabezados de columnas:

Sub test()
Dim rng As Range
On Error Resume Next
Set rng = Range(Cells(1), Intersect( _
Cells.Find("*", Cells(1), xlValues, xlWhole, xlByRows, _
xlPrevious).EntireRow, _
Cells.Find("*", Cells(1), xlValues, xlWhole, xlByColumns, _
xlPrevious).EntireColumn))

If Not rng Is Nothing Then _
rng.Sort _
Key1:=rng(1, rng.Columns.Count), _
Order1:=xlDescending, _
Header:=xlYes, _
Orientation:=xlTopToBottom
End Sub

Saludos,
KL


"FeCel" wrote in message
news:
Necesito ayuda para hacer una macro que ordene una planilla en forma
descendente, por la ultima columna. La planilla puede tener un numero
variable de filas y de columnas.
De antemano gracias.
FeCel
Respuesta Responder a este mensaje
#2 FeCel
22/09/2005 - 23:01 | Informe spam
Muchas Gracias. Funciona perfectamente.
Aprovecho de pedirte otra ayuda. Hace algunos días me ayudaste con la
siguiente macro para "juntar" celdas:

Dim c As Range: Set c = ActiveCell
With c
.Value = .Value & " " & .Offset(, 1).Value
.Offset(, 1).Delete Shift:=xlToLeft
End With
End Sub

¿Como se puede adaptar para que junte las celdas de un rango seleccionado,
cada una de ellas con la que está en la columna de la derecha, y luego
elimine las de la columna de la derecha, desplazando cada fila a la
izquierda. Es decir, hacer lo mismo que esa macro, pero para un rango y no
solo para una celda por vez.
Muchas gracias KL.
FeCel

"KL" escribió:

Hola FeCel,

Prueba este macro que asume que tu tabla empieza en la celda [A1] y tiene
encabezados de columnas:

Sub test()
Dim rng As Range
On Error Resume Next
Set rng = Range(Cells(1), Intersect( _
Cells.Find("*", Cells(1), xlValues, xlWhole, xlByRows, _
xlPrevious).EntireRow, _
Cells.Find("*", Cells(1), xlValues, xlWhole, xlByColumns, _
xlPrevious).EntireColumn))

If Not rng Is Nothing Then _
rng.Sort _
Key1:=rng(1, rng.Columns.Count), _
Order1:=xlDescending, _
Header:=xlYes, _
Orientation:=xlTopToBottom
End Sub

Saludos,
KL


"FeCel" wrote in message
news:
> Necesito ayuda para hacer una macro que ordene una planilla en forma
> descendente, por la ultima columna. La planilla puede tener un numero
> variable de filas y de columnas.
> De antemano gracias.
> FeCel



Respuesta Responder a este mensaje
#3 KL
22/09/2005 - 23:49 | Informe spam
Hola FeCel,

Dim c As Range: Set c = ActiveCell
With c
.Value = .Value & " " & .Offset(, 1).Value
.Offset(, 1).Delete Shift:=xlToLeft
End With
End Sub
hacer lo mismo que esa macro, pero para un rango y no
solo para una celda por vez.




A ver que tal este codigo:

Sub test()
Dim rng As Range, c As Range
If Not TypeOf Selection Is Range Then
MsgBox "Por favor selecciona una celda o rango de celdas"
Exit Sub
End If
Set rng = Selection.Columns(1).Cells
For Each c In rng
With c
.Value = .Value & " " & .Offset(, 1).Value
End With
Next c
rng.Offset(, 1).Delete Shift:=xlToLeft
End Sub

Saludos,
KL
Respuesta Responder a este mensaje
#4 FeCel
23/09/2005 - 01:11 | Informe spam
Perfecto. Y muy didáctica.
Gracias
Felipe

"KL" escribió:

Hola FeCel,

> Dim c As Range: Set c = ActiveCell
> With c
> .Value = .Value & " " & .Offset(, 1).Value
> .Offset(, 1).Delete Shift:=xlToLeft
> End With
> End Sub
> hacer lo mismo que esa macro, pero para un rango y no
> solo para una celda por vez.


A ver que tal este codigo:

Sub test()
Dim rng As Range, c As Range
If Not TypeOf Selection Is Range Then
MsgBox "Por favor selecciona una celda o rango de celdas"
Exit Sub
End If
Set rng = Selection.Columns(1).Cells
For Each c In rng
With c
.Value = .Value & " " & .Offset(, 1).Value
End With
Next c
rng.Offset(, 1).Delete Shift:=xlToLeft
End Sub

Saludos,
KL




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida