Recorrer rango seleccionado en una hoja de Excel y pasar a otra hoja si se cumple un determinado valor.

Tengo varios datos en formato fecha en una hoja (estos empiezan en la celda C4 hasta la C163) y me gustaría poder ordenarlos (hasta ahora he utilizado la fórmula Jerarquia en otra celda), de más antiguo a más reciente, y lo que me gustaría hacer es una macro que me recorra un rango y me los ordene teniendo en cuenta los datos de las celdas B4 a B163 (que es el código).

Ejemplo:

Nº Fecha Orden

1   20/03/16       2

2   10/05/15       1

3   20/01/17       3

Lo que necesito es que me de el valor en otra hoja y me lo ordene, por ejemplo:

Fecha Nº

10/05/15    1

20/03/16    2

20/01/17    3

2 Respuestas

Respuesta
1

No necesitas ninguna macro, pon un filtro y orden a de menor a mayor la columna de las fechas

Si, eso lo sé. Lo que pasa es que si cambio las fechas, tengo que volver a filtrar, y lo que deseo es evitarlo. Que la macro recorra el rango y me lo ordene directamente.

En ese caso esta macro te servirá:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C4:C163")) Is Nothing Then
    With ActiveWorkbook.Worksheets("Hoja1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End If
End Sub

Deberás cambiar el nombre de Hoja1 por el tuyo y poner la macro en la hoja con el evento worksheet_change

Respuesta
1

</Hola

Te paso la macro, si tus datos están de esta forma.

Datos en la hoja1

resultado en la hoja2


macro 

Sub copia_ordena()
'//Por Adriel Ortiz
'
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
h1.Cells.Copy h2.[A1]
u = h2.Range("A" & Rows.Count).End(xlUp).Row
        With h2.Sort
            .SortFields.Clear
            .SortFields.Add Key:=h2.Range("A2:A" & u), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange h2.Range("A1:B" & u)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas