En ocasiones recibimos hojas de cálculo tratadas por otras personas, en las que el orden de las líneas no corresponde a ningún criterio conocido.
Esto puede deberse a que la persona que preparó la hoja de cálculo eliminó las columnas que se usaron para crear el orden, o incluso que ese orden nunca existió, por ejemplo si se trata de datos introducidos manualmente.
Si deseamos reordenar estas líneas y poder regresar posteriormente al orden original, la solución es tan sencilla como crear una columna auxiliar en la que indicaremos números en orden ascendente, para representar el orden original. Esto nos permite volver a ordenar por esta columna y recuperar el orden original.
Muchas herramientas permiten ordenar líneas ya sea numéricamente o alfanuméricamente.
Pero en ocasiones lo que interesa es desordenarlas, o lo que es lo mismo ordenarlas de forma aleatoria. Por ejemplo para analizar una muestra representativa de los datos de un fichero.
Aunque es posible hacerlo con una hoja de cálculo como Microsoft Excel, hoy os muestro como hacerlo con el editor de texto gratuito Notepad++.
Esta herramienta presenta la ventaja de no estar limitada al millón de líneas que permite gestionar como máximo Excel.
En el mundo del libro es muy habitual trabajar con dos códificaciones equivalentes.
Por
un lado el ISBN (International Standard Book Number), que identifica a
cada libro de forma única, mediante 13 dígitos numéricos separados por
guiones.
Por el otro se usa el código EAN (European Article
Number), que se corresponde con lo mismo 13 dígitos, pero sin separador,
y que usualmente se muestra como un código de barras para facilitar la
lectura mecánica de los códigos.
En este ejemplo muestro como
eliminar los guiones de un ISBN, mediante la hoja de cálculo Microsoft
Excel y transformarlos en un código EAN 13.
Estableciendo una pausa entre instrucciones mediante VBA para Microsoft Excel.
El tercer elemento que necesitaremos para entender los bucles es la posibilidad de reproducirlo a cámara lenta.
Para ello lo que haremos es establecer una pausa entre las instrucciones.
El código usado en el ejemplo es el siguiente:
Primero mediante la instrucción Now se puede obtener la fecha y la hora actual.
Este es el aspecto que tiene.
TimeValue nos permite transformar una cadena de texto en un valor tipo fecha hora.
Mediante un MsgBox vemos su aspecto.
Si unimos estas dos instrucciones, podemos conseguir que mediante un condicional, no se ejecute la siguiente instrucción hasta que pase una cantidad de tiempo que sumemos al momento actual.
Suele sumarse un número de segundos a Now.
En el ejemplo sumamos 5 segundos TimeValue("00:00:05")
Se muestra un primer mensaje, y tras pulsar el botón Aceptar ....
Tras cinco angustiosos segundos de espera, se ejecuta la siguiente instrucción, mostrando el segundo mensaje.
Usaremos esta técnica para poder ver como se van ejecutando cada segundo las instrucciones en los bucles, ya que de forma contraria podría parecer que se ejecutan en un único paso.
Aquí tenéis el código VBA completo por si lo queréis copiar:
Option Explicit
Sub establecerPausa()
'con Now obtenemos la fecha y hora actual
MsgBox (Now)
'TimeValue permite transformar una cadena de texto en un valor Time de VBA
'TimeValue ("00:00:01") representa 1 segundo
MsgBox (TimeValue("00:00:01"))
'Application.Wait estable una pausa en el código hasta la fecha y hora indicadas