¡Hola! Me parece que andas usando un bloqueador de anuncios =( ¿Nos desbloqueas? ¿Por qué?
F13

Funcion 13

Encadenando texto con Excel para automatizar tareas

El artículo de hoy, se sale un poco de la tónica a la que os tengo acostumbrados. No va de programación per se.

En esta ocasión, trataremos una función de Excel que uso bastante a menudo para automatizar mi trabajo y que, no diré que la uso día a día, pero sí al menos una vez a la semana.

En mi trabajo, a menudo me pasan un listado enorme de “cosas” que hay que actualizar o insertar en una base de datos, formatearla de alguna manera para que un script se la trague, etc.

Ayer mismo me pasaron un listado de Organizaciones a las que tenía que actualizarle el campo organizacion_padre. Es el típico Excel administrativo en el que, con suerte, te vendrán solo las dos columnas que te interesan aunque, habitualmente, encontrarás mucha más información de la que te interesa.

Conociendo a CONCATENAR

Veamos una captura ficticia de un Excel como el que os hablo:

Vale, sé que es un ejemplo pequeño, pero mi creatividad no da para más y no puedo poner datos reales. Imagina que vas a trabajar con un Excel de alrededor de 1000 filas.

Lo primero que tenemos que saber es lo que queremos lograr. En mi caso, la consulta SQL que yo haría sería algo así:

UPDATE organizaciones  
SET    organizacion_padre = (SELECT id  
                             FROM   organizaciones 
                             WHERE  nombre = 'Telefónica') 
WHERE  nombre = 'Movistar'  

Y así por cada una. Vaya currazo (sigue con las 1000 filas en mente ehh!)… Veamos cómo arreglarlo.

En nuestro ejemplo, colocaré el siguiente contenido en las siguientes celdas, podéis ponerlas como queráis, es solo un ejemplo:

  • F1: UPDATE organizaciones SET organizacion_padre = (SELECT id FROM organizaciones WHERE nombre =
  • G1:
  • H1: ) WHERE nombre =
  • I1: ;

Como véis, es la consulta dividida sin poner nada de contenido, el contenido lo cogeremos de las celdas.

Ahora, en la celda C1 voy a colocar la siguiente fórmula, que es la que interesa:

`=CONCATENATE($F$1;$G$1;B1;$G$1;$H$1;$G$1;A1;$G$1;$I$1)``

La función CONCATENATE puede cambiar de nombre en función del idioma de Excel

El $ hace que, al arrastrar la celda a las que quedan abajo, se mantengan los valores. En nuestro caso, la columna A y la B son las que contienen datos “móviles” mientras que el resto será siempre fijo.

Esto, nos dejará este “chorizo” de consultas SQL, que podemos guardar en un archivo modificaciones.sql y pasárselo al servidor por ejemplo:

UPDATE organizaciones  
SET organizacion_padre = (SELECT  
  id
FROM organizaciones  
WHERE nombre = "Telefónica")  
WHERE nombre = "Afiliados de Francia";  
UPDATE organizaciones  
SET organizacion_padre = (SELECT  
  id
FROM organizaciones  
WHERE nombre = "Telefónica")  
WHERE nombre = "Afiliados de Irlanda";  
UPDATE organizaciones  
SET organizacion_padre = (SELECT  
  id
FROM organizaciones  
WHERE nombre = "Mercadona")  
WHERE nombre = "Deliplus Corp";  
UPDATE organizaciones  
SET organizacion_padre = (SELECT  
  id
FROM organizaciones  
WHERE nombre = "Mercadona")  
WHERE nombre = "Hacendado Corp";  
UPDATE organizaciones  
SET organizacion_padre = (SELECT  
  id
FROM organizaciones  
WHERE nombre = "Telefónica")  
WHERE nombre = "Movistar";  

Como ves, es un método bastante sencillo para generar consultas SQL con datos de una hoja de cálculo. El límite lo pone tu imaginación.

Cada vez que le he mostrado a alguien esta técnica me ha comentado que esto le puede ahorrar bastante tiempo en su trabajo del día a día así que espero que a alguien que lea esto, ¡le pueda servir!

Si el artículo te pareció interesante, útil o incluso equivocado, por favor considera el dejar un comentario. ¡Lo apreciaré mucho!

Programador Front-end en First + Third y Potato. Trabajando con JavaScript y HTML5 desde el corazón de Sevilla.

Comentarios ¡Únete a la conversación!