Desordenar datos ordenados en Microsoft Excel VBA

Bilal Shahid 15 febrero 2024
  1. Cómo desordenar datos ordenados en VBA
  2. Método 1: mantener una columna temporal con valores numéricos crecientes
  3. Método 2: use las herramientas de MS Excel
  4. Método 3: mantenga una copia de seguridad de los datos
  5. Conclusión
Desordenar datos ordenados en Microsoft Excel VBA

VBA es un lenguaje de programación para aplicaciones de Microsoft Excel que brinda a los usuarios varias funciones y características. Este artículo nos enseñará formas de desclasificar datos en VBA.

Cómo desordenar datos ordenados en VBA

Ordenar es una práctica muy común cuando se trabaja con MS Excel. Es posible que desee clasificar los datos en orden ascendente o descendente para calcular el valor más alto o más bajo de algunos valores, organizar los datos, etc.

La clasificación en Excel se puede realizar mediante:

  1. Uso de las opciones de clasificación y filtrado de MS Excel
  2. Usando el método VBA Range.Sort

Sin embargo, uno podría realizar estas acciones y luego darse cuenta de que debe revertir los datos a su forma original. Existe la opción de deshacer estándar Ctrl+Z disponible, pero hay situaciones en las que esto no funciona.

Por ejemplo:

  1. Si guardó el archivo de Excel y lo volvió a abrir.
  2. Si ha realizado algunos cambios adicionales y no desea revertirlos, desea deshacerse solo de la clasificación.
  3. Si ha realizado la clasificación utilizando el código VBA.

Por lo tanto, debe haber algún método adecuado para solucionar esta limitación, para volver a la organización de datos original en su hoja de Excel. Veamos esos métodos uno por uno.

Método 1: mantener una columna temporal con valores numéricos crecientes

Este método nos permite desclasificar los datos manteniendo una referencia al orden original de los datos. Entendamos esto usando un ejemplo.

Suponga que tiene los siguientes datos en su hoja:

Datos de ejemplo

Ahora, para conservar el orden original de los datos, podemos insertar una columna temporal que realice un seguimiento de los mismos. Esto significa que guardaremos los valores del número de serie en una columna.

Esto se puede hacer siguiendo estos dos sencillos pasos:

  1. En la primera columna vacía, complete las dos primeras celdas con los valores 1 y 2.

    Paso 1

  2. Seleccione estas dos celdas y arrástrelas hacia abajo desde la esquina inferior derecha, donde aparecerá un signo más. Esto llenará toda la columna con valores numéricos crecientes.

    Paso 2

Alternativamente, puede crear esta columna temporal usando el siguiente código en VBA:

Sub CreateColumn()

For m = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(m, "A").Value <> "" Then
Cells(m, "C").Value = m - 1
End If
Next m

End Sub

Nota: Deberá cambiar el valor de m y los nombres de las columnas de acuerdo con los datos de su hoja.

Ahora que tiene la columna temporal, puede ordenar los datos todo lo que quiera y siempre podrá devolverlos a este estado. Por ejemplo, ejecutemos la siguiente macro para ordenar los datos según el salario:

Sub Sort()

Set sortRange = Range("A1:C6")
Set keyCell = Range("B1")
sortRange.Sort Key1:=keyCell, Order1:=xlAscending, Header:=xlYes

End Sub

Los datos ahora están ordenados así:

datos ordenados

Si desea desclasificar los datos, simplemente ejecute el código de clasificación de nuevo, pero esta vez mantiene la Clave1 como columna temporal para que los valores se ordenen de acuerdo con ella. Haremos esto de la siguiente manera:

Sub Sort()

Set sortRange = Range("A1:C6")
Set keyCell = Range("C1")
sortRange.Sort Key1:=keyCell, Order1:=xlAscending, Header:=xlYes

End Sub

Los datos ahora están desordenados como estaban originalmente.

datos sin clasificar

Nota: También puede ordenar en el ejemplo anterior usando las opciones de “Ordenar y filtrar” de MS Excel en el menú “Inicio” en lugar del código VBA.

Método 2: use las herramientas de MS Excel

MS Excel proporciona algunas herramientas de clasificación y filtrado con varias opciones. Puede especificar en qué columna desea ordenar y el orden.

Por ejemplo, si queremos ordenar los datos originales según los salarios, podemos seleccionar lo siguiente en la opción de ordenación Ordenación personalizada.

Clasificación personalizada

En la mayoría de las versiones de MS Excel, hay una opción para borrar toda la clasificación y el filtrado. La opción está disponible a través de START > EDICIÓN > ORDENAR Y FILTRAR > BORRAR.

Método 3: mantenga una copia de seguridad de los datos

Una forma de ordenar los datos es mantener una copia de seguridad de sus archivos de Excel. Esto es extremadamente útil en casos de mal uso accidental.

Cuando desee desclasificar, puede consultar el archivo de copia de seguridad y utilizar los datos sin procesar guardados allí en el orden original. Aquí hay algunos métodos para crear un archivo de copia de seguridad:

  1. Copie y pegue los datos en una hoja separada en el libro de trabajo.
  2. Cree una copia de todo el archivo de Excel.
  3. Automatice el proceso de creación de una copia de seguridad con una macro de marca de tiempo de VBA que crea una copia a una hora específica cada día. De esta forma, solo tendrás que crear una copia de seguridad manualmente de vez en cuando.
  4. Cree una copia de respaldo en la misma ubicación que el archivo original usando VBA.
  5. Cree una copia de seguridad en otra ubicación usando VBA. Guardar en otra ubicación ayuda con la eliminación accidental o el borrado de los datos.

Nota: puede utilizar los métodos Guardar y Guardar como para crear una copia de seguridad con VBA.

Conclusión

Esto resume nuestra discusión sobre diferentes métodos para ordenar datos en VBA, un lenguaje de programación útil que ahorra un tiempo valioso para los usuarios de Microsoft Office. Los métodos que discutimos son:

  1. Mantener una columna temporal con valores numéricos crecientes
  2. Uso de las herramientas de MS Excel
  3. Mantener una copia de seguridad de los datos
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub