Ciudades inversa e inicio fin y pasos
- Jaime Franco Jimenez

- 28 sept 2023
- 2 Min. de lectura
Tenemos varias columnas con diferentes ciudades.

Debemos de crear un informe, pero con las columnas en sentido inverso, es decir, la primera columna de ciudades es:

Pues, deben de aparecer como sigue:

Empecemos…
Vamos a usar la funcion INDICE, pero, vamos a usar la expresión que usaremos como argumento número de columna.
En la celda G2, usamos SECUENCIA, omitimos el argumento filas, como argumento columnas, usamos CONTARA como argumento valor1, seleccionamos el rango A2:E2, como argumento inicio, volvemos a usar la funcion CONTARA, como argumento paso, ponemos -1.
=SECUENCIA(;CONTARA(A2:E2);CONTARA(A2:E2);-1)
Obtenemos una matriz desbordada en horizontal con el resultado de CONTARA, pero, a la inversa.

Esta expresión es el argumento numero de columna de la funcion INDICE que vamos a usar.
En la celda G2, usamos LET, creamos una variable, usamos INDICE, como argumento matriz, seleccionamos las columnas A:E, como argumento numero de fila, usamos SECUENCIA, como argumento filas, ponemos 18, que son las filas que tenemos, omitimos el argumento columnas, como argumento inicio, ponemos 2, para saltar el encabezado, como argumento paso, ponemos 1, u, lo omitimos, como argumento número de columna es la expresión.
Ya lo tenemos, pero, donde no hay coincidencia aparece 0.

Usamos el argumento calculo de LET, preguntamos si la variable “a” es igual a blanco, en ese caso, que devuelve blanco, en caso contrario, que devuelva la variable “a”.
=LET(a;INDICE(A:E;SECUENCIA(18;;2;1);SECUENCIA(;CONTARA(A2:E2);CONTARA(A2:E2);-1));SI(a=0;"";a))
Ahora, si lo tenemos.

Veamos otro ejemplo.
Tenemos los siguientes ID.

Por ejemplo, el ID 105, aparece seis veces, pues, el primer ID 105, debe de poner Comienzo, en el ultimo ID, debe de aparecer Fin, y, en los pasos intermedios, debe de aparecer Paso1/Paso2/Paso3…
Empecemos…
En la celda C2, nos traemos los ID únicos.
=UNICOS(A2:A17)

En la celda D2, usamos LET, creamos una variable, usamos la funcion ENCONTRAR, como argumento texto buscado, seleccionamos la celda C2, como argumento dentro del texto, seleccionamos el rango A2:A17, y, fijamos.
Probamos variable.
=LET(a;ENCONTRAR(C2;$A$2:$A$17);a)
Obtenemos una matriz desbordada en vertical con 1 que es la posición de la primera letra buscada, y, error donde no hay coincidencia.

Preguntamos si es número el resultado.
=LET(a;ESNUMERO(ENCONTRAR(C2;$A$2:$A$17));a)
Obtenemos VERDADERO donde hay coincidencia, y, FALSO donde no lo es.

Usamos el doble signo negativo.
=LET(a;--ESNUMERO(ENCONTRAR(C2;$A$2:$A$17));a)
Obtenemos 1 donde era VERDADERO, y, FALSO donde no lo es.

Sumamos los resultados.
=LET(a;SUMA(--ESNUMERO(ENCONTRAR(C2;$A$2:$A$17)));a)
Obtenemos 6.
Usamos la funcion SECUENCIA, donde omitimos el argumento filas, como argumento columnas es la expresión anterior.
=LET(a;SECUENCIA(;SUMA(--ESNUMERO(ENCONTRAR(C2;$A$2:$A$17))));a)
Obtenemos una matriz desbordada desde el numero 1 al número 6.

Creamos otra variable, usamos el condicional SI, como argumento prueba lógica, preguntamos si la variable “a” es igual al valor mínimo de la variable “a”.
=LET(a;TRANSPONER(SECUENCIA(SUMA(--ESNUMERO(ENCONTRAR(C2;$A$2:$A$17)))));b;SI(a=MIN(a)
Como argumento valor si verdadero, entre comillas dobles, ponemos Comienzo, como argumento valor si falso, ponemos otro condicional SI, como argumento prueba lógica, preguntamos si la variable “a” es igual al valor máximo de la variable “a”.
=LET(a;TRANSPONER(SECUENCIA(SUMA(--ESNUMERO(ENCONTRAR(C2;$A$2:$A$17)))));b;SI(a=MIN(a);"Comienzo";SI(a=MAX(a)
Como argumento valor si verdadero del segundo SI, entre comillas dobles, ponemos Fin, como argumento valor si falso, entre comillas dobles, ponemos Paso, concatenamos con la variable “a”, probamos variable.
=LET(a;TRANSPONER(SECUENCIA(SUMA(--ESNUMERO(ENCONTRAR(C2;$A$2:$A$17)))));b;SI(a=MIN(a);"Comienzo";SI(a=MAX(a);"Fin";"Paso"&a));b)
Arrastramos y ya lo tenemos.





Comentarios