jueves, 13 de octubre de 2011

Agrupar el texto de una columna intercalando separadores

Continuando con el ejemplo de la entrada anterior, vamos a agrupar el texto de la columna B intercalando separadores entre los datos.

Pondremos una lista de separadores en la columna D y elegiremos uno en la celda G2. El texto lo agruparemos en G3 y usaremos el rango G5:G9 para almacenar los resultados intermedios.


En D3: Dejamos un espacio y escribimos (espacio)
En D4: / (barra de división)
En D5: \ (barra invertida)
En D6: | (barra vertical)
En D7: ǁ (vertical doble)
En D8: ─ (guión largo)
En D9: • (círculo negro)
En D10: ▪ (cuadrado negro)
En D11: ▫ (cuadrado blanco)

A continuación, definiremos un "nombre" dinámico para referirnos a esta lista de separadores. Para ello, en la pestaña Fórmulas, hacemos clic en Asignar nombre y creamos el nombre "Separador" con la fórmula: =DESREF($D$2;1;0;CONTARA($D:$D)-1;1)

Hacemos clic en G2 y, en la pestaña Datos, accedemos a Validación de datos. En Permitir, elegimos Lista. En Origen escribimos: =Separador

En la lista de separadores de la celda G2, elegimos uno; por ejemplo, | (barra vertical)

Contamos los caracteres de la columna B que debemos agrupar y ponemos el resultado en G5.

En G5:
=SUMAPRODUCTO(LARGO(DESREF(B2;1;0;CONTARA(B:B)-1;1)))      [Resultado: 78]

Contamos las filas y ponemos el dato en G6.

En G6:
=CONTARA(B:B)-1     [Resultado: 9]

Abrimos el menú Archivo y accedemos a Opciones. En la ficha Fórmulas, habilitamos el cálculo iterativo, ponemos 100 iteraciones y un cambio máximo de cero.

En G7:
=SI(G8>G6;0;1)

En G8:
=(G8+1)*G7

En G9:
=SI(G7=0;"";IZQUIERDA(CONCATENAR($G$9;IZQUIERDA(G2;1);DESREF($B$2;$G$8;0;1;1));G5+CONTARA(B:B)))

Finalmente,

En G3:
=SI(LARGO(G9)=G5+CONTARA(B:B);G9;G3)

Podemos elegir cualquier otro separador y añadir nuevos separadores en la columna D.

Descargar archivo (S104-Unir celdas con separadores.xls)

Descargar archivo (S104-Unir celdas con separadores.xlsx)

No hay comentarios:

Publicar un comentario