Macro que ordene columna

Necesito ayuda.. Actualmente tengo una serie de hojas de la cual necesito que cuando me sitúe específicamente en una hoja me ordene la columna B, pero que cuando me ordene esa columna el dato de la columna C de esa misma dirección, se mueva hasta donde se sitúe el dato de la columna B. Actualmente me ordena pero es solo la columna B y me descuadra toda la información. La columna B son fechas y la columna C son nombres de empresas..
Muchísimas gracias de ante mano..

1 Respuesta

Respuesta
1

¿Cuántas columnas contiene la tabla?

36 amigo. pero necesito que me ordene solamente la B, y el dato que esta en la C que va sujeto al de la B de esa misma dirección, se sitúe en donde ese dato de la B caiga ordenado..

Como indicaste que necesite que te ordene la hoja en especifica que seleccionas.

Abre el editor de VBA - Microsoft Excel Objetos.- Y en la hoja que desees ordenas coloca este código, y cada vez que selecciones la hoja se ordena automáticamente.

Recuerda cerrar la pregunta y puntuar!

Private Sub Worksheet_Activate()
'Cheysson Solano Umaña
'se ordena el rango por la Columna B, en forma ascendente
finfil = ActiveSheet.Range("B65536").End(xlUp).Row
ActiveSheet.Range("B2:C" & finfil).Select
Selection.Sort key1:=Range("B2"), order1:=xlAscending, Header:=xlGuess, ordercustom:=1, MatchCase:=False
End Sub

amigo exactamente me ordena. pero solo que necesito que esa macro se ejecute cuando me sitúe en otra hoja y no en esa. me explico,...

cuando me pare en la hoja 3 se ejecute la macro de la hoja 1..

muchísimas gracias hermano solo necesito eso ultimo..

Tienes dos opciones

1-Pegas este código en las hojas que al seleccionar, ejecute la macro en la hoja1.

Sub Worksheet_activate()
'Cheysson Solano Umaña
'se ordena el rango por la Columna B, en forma ascendente
finfil = sheet1.Range("B65536").End(xlUp).Row
'Ejecutar macro en Hoja 1
sheet1.Range("B2:C" & finfil).Select
Selection.Sort key1:=Range("B2"), order1:=xlAscending, Header:=xlGuess, ordercustom:=1, MatchCase:=False
ActiveSheets
End Sub

2- Pegas el mismo códico en un módulo, y en cada hoja que necesites colocas este código que llama a la macro.

Sub Worksheet_activate()

'Llamamos a la macro

Call Module1.Worksheet_activate

end sub

Te coloco nuevamente el código para que no se te desplace a la hoja1 cuando ejecuta la macro

Sub Worksheet_activate()
Application.ScreenUpdating = False
'Cheysson Solano Umaña
'se ordena el rango por la Columna B, en forma ascendente
finfil = sheet1.Range("B65536").End(xlUp).Row
'Ejecutar macro en Hoja 1
sheet1.Range("B2:C" & finfil).Select
Selection.Sort key1:=Range("B2"), order1:=xlAscending, Header:=xlGuess, ordercustom:=1, MatchCase:=False
ActiveSheets
Application.ScreenUpdating = True
End Sub

mi pana me esta dando el error 424 en tiempo de ejecución en la siguiente linea:

finfil = sheet1.Range("B65536").End(xlUp).Row

estamos mas cerca en lograrlo pana.. de verdad agradecido por tu ayuda..

Enviame tu archivo a [email protected] para colocarte la macro

ok vaa

Tu archivo me daba problemas pero aca esta.

Coloca en la hoja2 este código:

Private Sub Worksheet_Activate()
'Cheysson Solano
Call Módulo1.ordenar2
End Sub

Y en el modulo 1 este:

Sub ordenar2()
'Cheysson Solano Umaña
'se ordena el rango por la Columna B, en forma ascendente
Hoja1.Sort.SortFields.Clear
finfil = Hoja1.Range("B65536").End(xlUp).Row
Hoja1.Range("B2:C" & finfil).Sort key1:=Hoja1.Range("B2"), order1:=xlAscending, Header:=xlGuess, ordercustom:=1, MatchCase:=False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas