Ordenar VBA - Consejos de Excel

Tabla de contenido

Macro de Excel VBA para ordenar datos. No me gusta cómo la grabadora de macros crea código adicional para ordenar. Ordenar en Excel VBA debería ser simple. Una línea de código, con la columna a ordenar, en qué dirección (ascendente o descendente) y hay un encabezado.

Ver video

  • La grabadora de macros de Excel no hace un buen trabajo con la clasificación de grabaciones.
  • Siempre que sus datos se puedan seleccionar usando Ctrl + * (conocido como la región actual)
  • Siempre que no esté ordenando por color o icono o en más de tres niveles
  • Utilice el método Range (). CurrentRegion.Sort de la vieja escuela en Excel

Transcripción del video

Aprenda Excel de MrExcel Podcast, Episodio 2093: Clasificación con VBA

Oye, bienvenido de nuevo a Netcast, soy Bill Jelen. La pregunta de hoy de James en Huntsville. James, utilicé la grabadora de macros para registrar la acción de clasificar los datos. Digamos que James necesitaba ordenar estos datos por Sector y Clientes. Así que vienes aquí a la pestaña Ver, Macros, Grabar nueva macro, OrdenarMyReports, Tecla de acceso directo Ctrl: escribiré Shift + S allí y haré clic en Aceptar. Muy bien, entonces desde aquí hacemos: Datos, Ordenar, y queremos decir que queremos Ordenar por Sector y luego Agregar un Nivel y Ordenar por Cliente, y hacer clic en Aceptar. Abajo, en la esquina inferior izquierda, hacemos clic en Detener grabación. Muy bien, ahí está. Parece haber funcionado, ¿verdad?

Pero aquí está el problema: mañana tendrás más o menos datos o, ya sabes, lo que sea. Y esa macro grabada es simplemente horrible. Echemos un vistazo, haré Alt + F8 y echaré un vistazo a SortMyReport, lo editaré. Muy bien, y esto es todo lo que grabaron para SortFields.Clear, y luego configuraron una nueva ordenación con SortFields.Add y están codificados, y hay 568 filas, y todas las cosas.

Ahora, volviendo a clasificarme en el día, fue muy, muy fácil. Muy bien, y luego en Excel 2007 agregaron Ordenar por icono, Ordenar por color, Ordenar por color de fuente, la capacidad de tener 15 ordenaciones de nivel y todo se volvió realmente loco. Entonces, ya no uso la macro grabada. Solo voy a la vieja escuela.

Ahora, voy a volver a Excel. Estas son las reglas para que funcione esta clasificación de la vieja escuela. Encabezado sobre cada columna: ese encabezado debe estar en una fila, no en dos filas. Si tienes títulos ahí arriba y está bien tener títulos ahí arriba. Necesita una fila completamente en blanco entre sus títulos y el primer encabezado. Si tiene notas en el lado derecho: su esposa llama con una lista de compras, “Oye, cariño, detente en el camino a casa. Consigue leche, huevos y vodka ". Tiene que haber una columna completamente en blanco entre sus datos y eso. Y si hay notas repetitivas en la parte inferior, asegúrese de que haya una fila completamente en blanco entre el último bit de datos y esas notas.

Mi objetivo es que podamos llegar a cualquier celda: la celda de la esquina superior izquierda contiene estos datos y presione Ctrl + * y seleccionará los datos que se ordenarán. Ahora, voy a presionar Ctrl +. que nos lleva a esta esquina y luego Ctrl +. nos llevará a la esquina inferior derecha, Ctrl +. nos lleva a la esquina inferior izquierda. Muy bien, entonces si Ctrl + * selecciona correctamente sus datos, entonces todo es genial. Si pones tu lista de la compra en la Columna H y vemos que venimos aquí y Ctrl + *, bueno, ahora estamos ordenando la lista de la compra como parte del asunto y tu lista de la compra se arruinará. O desharemos: si esta fila no está aquí, ahora hacemos Ctrl + *, mira, estamos- ahora no tendrán ni idea porque ya no tienen ningún encabezado, ¿de acuerdo?

Entonces, si va a usar mi código, asegúrese de que todas estas reglas sean verdaderas: no ordenar mi color, no ordenar mi icono, 3 o menos niveles de ordenación. Deshacer, está bien. Entonces, esto es lo que sabemos: sabemos que todos los días nuestros datos comenzarán en A5. Si no sabemos cuántas filas o cuántas, bueno, incluso cuántas columnas podríamos tener. No puedo imaginar una situación en la que las columnas se intercambien, pero ciertamente el número de filas va a cambiar. Entonces Alt + F11, simplemente vamos a comenzar desde esa celda de la esquina superior izquierda. Entonces Range, en mi caso es "A5" .CurrentRegion. La región actual es esta propiedad de construcción impresionante que dice que vamos a presionar Ctrl + Shift + * y todo lo que está incluido allí es lo que se va a ordenar. Y lo hacemos .Sort. .Ordenar, está bien.

Ahora, aquí está la cosa. Si desea hacer una ordenación de un nivel, es fácil: Key1: =. : = y solo decimos que va a ser Range - Oh, olvido lo que es. Era Sector, ¿dónde está Sector? El sector está en la Columna C. Entonces, C5 en mi caso, Rango ("C5") y luego, Orden1: = xlAscendente. Presioné la tecla de flecha hacia abajo allí y luego Tab. Muy bien ahora, podría seguir saliendo hacia la derecha pero no voy a hacer eso. Voy a ir a una nueva línea, así que el espacio, el subrayado para ir a una nueva línea, continúa esta línea de código, ¿de acuerdo? Y si tengo una clasificación de segundo nivel: Key2: = y en este caso quiero clasificar por cliente que está en la Columna D, entonces D5. Y luego, Order2: xlAscending. Hermosa.

No tengo una clasificación de tercer nivel, pero si la tuviera, sería Key3 y luego Order3. Y luego el siguiente, el que tienes que hacer es Header, ¿de acuerdo? Entonces, Encabezado: = xl Supongo que ahí es donde te están metiendo muchos problemas. Y entonces vamos a decir xlYes allí, definitivamente como encabezado. Incluso en los viejos tiempos, la grabadora de macros usaba xlGuess. Odio que Excel adivine.

Eso es todo. Una línea de código, eso es todo lo que tiene que hacer y funcionará con más filas, menos filas. Es algo hermoso, hermoso. Muy bien, vamos a volver aquí a Excel. Ctrl + Shift + S sigue siendo lo que se asigna. Ahora: si acaba de cambiar a VBA y lo escribe usted mismo, puede ir a Alt + F8, buscar el nombre de su macro, hacer clic en Opciones y escribir Ctrl + Shift + S allí o incluso podemos asignarlo a un Tecla de acceso directo aquí en la barra de herramientas de acceso rápido. Haga clic con el botón derecho, Personalizar la barra de herramientas de acceso rápido donde elijo entre nuestras Macros. Tengo una macro llamada SortMyReport, haré clic en Agregar; detesto el pequeño diagrama de flujo allí. Modificaremos eso y me encantaría que hubiera algún tipo de situación de la A a la Z, pero por supuesto que no. Tal vez esa flecha quién sabe, quién sabe, simplemente elige cualquier cosa.La bola 8 mágica, no lo sé. Voy a elegir a este pequeño aquí, haga clic en Aceptar, haga clic en Aceptar. Muy bien, ahora nuestros datos están ordenados por fecha, yo elijo, y no importa lo que elija. Siempre va a volver atrás y ordenarlo desde A5, hago clic en el pequeño y mis datos ahora están ordenados por sector, dentro del sector, por cliente. Funciona muy bien, ¿de acuerdo?

Entonces, si eres fanático de la grabadora de macros, mis mejores deseos para ti. Pero el código de la grabadora de macros en estos días para la clasificación ordenada en VBA es mucho más simple; para volver atrás, simplemente use esencialmente esta, una línea de código.

Bueno, este es generalmente el lugar donde trato de que compre este libro, pero hoy creo que debería echarle un vistazo a este libro: Excel 2016 VBA y Macros de Tracy y yo. ¡Guauu! Mira esto. No me di cuenta de que hay una versión en otro idioma. Lo ayudaremos a subir completamente la curva de aprendizaje de macros desde que grabó su primera macro en el código que necesita.

Bueno, resumen simple por hoy: la Grabadora de macros de Excel no hace un buen trabajo con la grabación, la clasificación: siempre que sus datos se puedan seleccionar usando Ctrl + * que se conoce como la región actual, siempre que no esté ordenando como color o icono o más de tres niveles, simplemente use el método Range (). CurrentRegion.Sort de la vieja escuela en VBA para ordenar.

Quiero agradecerle a James por enviar esa pregunta. Quiero agradecerle por pasar. Nos vemos la próxima vez para otro netcast de.

Descargar archivo

Descargue el archivo de muestra aquí: Podcast2093.xlsm

Articulos interesantes...