Todos sabemos cómo ordenar datos en Excel: seleccionas el rango, vas a la pestaña Datos y usas los botones de “Ordenar de A a Z” o viceversa.
Pero… ¿qué pensarías si te dijera que existe una forma mucho más rápida y elegante, en la que simplemente das doble clic en el encabezado de una tabla y Excel se ordena automáticamente por esa columna?
Dale Doble Clic al Encabezado y Excel hace TODO solo
Suscríbete para más tutoriales
🎁 Descarga el archivo para practicar
Escribe tu correo electrónico para recibir gratis el archivo para practicar.
*Al enviar mi correo electrónico, acepto recibir noticias y ofertas. Puedo darme de baja en cualquier momento.
Qué hace esta macro
En este video y ejemplo te muestro cómo crear una macro en Excel que:
✅ Detecta en qué columna hiciste doble clic.
✅ Ordena los datos por esa columna (ascendente o descendente).
✅ Recuerda cuál fue la última columna y el último orden, gracias a variables estáticas.
✅ Funciona con cualquier rango, no importa en qué columna empiece.
Y sí, sé que puedes ir a ChatGPT, Copilot o Gemini y pedirle que te genere una macro, pero lo importante es entender lo que hace el código, para que tú puedas supervisarlo, modificarlo o mejorarlo.
Porque una cosa es que te la generen, y otra muy distinta es saber exactamente cómo funciona.
Entendiendo el evento BeforeDoubleClick
El truco está en usar el evento BeforeDoubleClick de la hoja.
Este evento se ejecuta antes de que Excel entre en modo edición al dar doble clic sobre una celda.
Así que lo aprovechamos para cancelar esa edición y, en su lugar, ordenar automáticamente el rango por la columna donde diste doble clic.
Para escribir la macro:
- Da clic derecho sobre la pestaña de la hoja → Ver código.
- En la parte superior izquierda selecciona Worksheet.
- En la parte superior derecha elige el evento BeforeDoubleClick.
Listo, ahí pegamos el código.
🧩 Cómo funciona el código
Primero declaramos nuestras variables:
Dim Datos As Range
Dim ColRelativa As Long
Dim Encabezados As Long
Static UltimaColumna As Long
Static UltimoOrden As XlSortOrder
Las variables Static sirven para recordar el valor anterior aunque la macro se ejecute varias veces.
Así Excel sabe si hiciste doble clic en la misma columna (para invertir el orden) o en una diferente (para empezar ascendente).
Luego definimos el rango de datos:
Set Datos = Range("A4").CurrentRegion
Y verificamos que el doble clic se haya hecho en el encabezado:
If Target.Row <> Datos.Rows(1).Row Then Exit Sub
Cancel = True
Después, calculamos la columna relativa al rango (esto es clave si tus datos no comienzan en la columna A):
ColRelativa = Target.Column - Datos.Columns(1).Column + 1
Así, no importa si tu rango empieza en A, B o Z: la macro siempre identifica correctamente la columna.
Por último, alternamos entre ascendente y descendente según la columna seleccionada:
If Target.Column = UltimaColumna Then
If UltimoOrden = xlAscending Then
UltimoOrden = xlDescending
Else
UltimoOrden = xlAscending
End If
Else
UltimaColumna = Target.Column
UltimoOrden = xlAscending
End If
Y aplicamos el orden:
With Datos
.Sort Key1:=.Columns(ColRelativa), _
Order1:=UltimoOrden, _
Header:=xlYes
End With
Certifícate en Excel
Tienes experiencia en Excel y quieres mejorar tus oportunidades laborales? Obtén la Certificación Excel Expert avalada por Microsoft.
