lunes, 20 de febrero de 2012

Extraer determinados campos de una base de datos

Cuando estaba escribiendo el último artículo, que trata de la manera de importar datos de la Web, recordé una consulta que me hicieron para extraer determinados campos de una base de datos de tipo texto que usaba la coma (,) como delimitador.

Si abrimos la base de datos (S56-Registros.txt) con el Bloc de notas de Windows podremos ver los campos que componen cada registro (creo recordar que correspondían al programa de una máquina de control numérico). Debajo se muestra la tabla que se quiere obtener.

Necesitamos extraer dos campos de cada registro (el tercero y el sexto) y agruparlos de tres en tres de la siguiente manera: el tercer campo de cada tres registros consecutivos seguido del sexto campo de los mismos tres registros. A continuación, de los tres siguientes, y así sucesivamente.

Abrimos un libro en blanco, seleccionamos todas las columnas desde la A hasta la I, pulsamos Ctrl +1 para entrar en la ventana Formato de celdas y, en la ficha Número, ponemos 6 decimales y separador de miles.

Accedemos a Datos + Desde texto. En el cuadro de diálogo Importar archivo de texto, buscamos el fichero S56-Registros.txt y pulsamos el botón Importar. Se abrirá el asistente para importar texto.

Paso 1 de 3: Nos aseguramos de que el botón Delimitados esté marcado y de que comenzamos a importar los datos desde la fila 1. Pulsamos Siguiente.

Paso 2 de 3: Desmarcamos Tabulación, marcamos Coma y pulsamos Siguiente.

Paso 3 de 3: Hay 7 columnas pero sólo tenemos que importar datos de las columnas 2 y 5. Seleccionamos la primera columna y marcamos el botón No importar columna (saltar). Hacemos lo mismo con las columnas 3, 4, 6 y 7.

Ahora, debemos pulsar el botón Avanzadas para indicar que en los datos originales los decimales están separados por puntos (.) y los miles por comas (,). Además, quitaremos la marca del cuadro de verificación Signo menos delante de los números negativos.

Pulsamos Aceptar para volver al asistente y terminamos haciendo clic en Finalizar.

En el cuadro de diálogo Importar datos sólo necesitamos indicar el lugar donde queremos colocar los datos; por ejemplo, $A$1. Si queremos, podemos pulsar el botón Propiedades para acceder al cuadro de diálogo correspondiente, que es similar al del ejercicio Importar datos de la Web. Terminamos pulsando Aceptar.

El resultado es el siguiente:

Ya tenemos todos los datos y, ahora, debemos agruparlos convenientemente. Lo haremos a partir de la columna D.

En D1:
=INDICE($A$1:$A$219;ELEGIR(RESIDUO(FILA()-1;3)+1; RESIDUO(FILA()+2;3)+COLUMNA(A$1)+(FILA()-1)*3; RESIDUO(FILA()+2;3)+COLUMNA(A$1)+(FILA()-1)*3-1; RESIDUO(FILA()+2;3)+COLUMNA(A$1)+(FILA()-1)*3-2);1)

Extendemos la fórmula hasta la celda F1.

En G1:
=INDICE($B$1:$B$219;ELEGIR(RESIDUO(FILA()-1;3)+1; RESIDUO(FILA()+2;3)+COLUMNA(A$1)+(FILA()-1)*3; RESIDUO(FILA()+2;3)+COLUMNA(A$1)+(FILA()-1)*3-1; RESIDUO(FILA()+2;3)+COLUMNA(A$1)+(FILA()-1)*3-2);1)

Extendemos la fórmula hasta la celda I1.

Seleccionamos D1:I1 y copiamos las fórmulas hacia abajo hasta la fila 73.

Si no hemos activado la actualización automática (ventana Propiedades) y la base de datos sufre alguna alteración y queremos que dichos cambios se concreten en nuestra hoja, bastará hacer clic con el botón derecho en cualquier número de las columnas A o B y, en el menú emergente, seleccionar Actualizar

Podemos hacer una prueba abriendo el fichero S56-Registros.txt con el Bloc de notas y sustituyendo algunos valores de las columnas 2 y 5. Guardamos los cambios y actualizamos la hoja seleccionando Actualizar en el menú contextual de las columnas A o B.

Descargar archivos (S56-Registros.txt)

Descargar archivos (S56-Registros.xls)

Descargar archivos (S56-Registros.xlsx)


2 comentarios: