Filtrar provincia por S
- Jaime Franco Jimenez

- 19 ago 2023
- 3 Min. de lectura
Para el siguiente ejemplo, vamos a trabajar con el modelo que suelo usar habitualmente, pero, algo más corto.
Si nos fijamos en la columna provincia, en algunas de ellas, primera aparece la palabra Provincia, después, la provincia, y, por último, el estado, en otras, aparece la palabra Provincia, la provincia, pero no el estado.

El modelo esta en formato de rango.
Debemos de crear un reporte donde la provincia empiece por la letra “S”.
Podríamos usar la función DIVIDIRTEXTO, el problema es que no la podemos usar de forma matricial, ni aun con funciones como BYROW, por lo que vamos a realizarlo con la función ENCONTRAR, que, si podemos usarla de forma matricial, por si sola.
Vamos a encontrar el primer espacio, para ello, ponemos ENCONTRAR, como argumento texto buscado, ponemos un espacio, como argumento dentro del texto, seleccionamos el rango B2:B26.
=ENCONTRAR(" ";B2:B26)
Nos devuelve una matriz desbordada en vertical con la posición 10 para todas las celdas.

Debemos de extraer caracteres, pero, debemos de extraer a partir del primer espacio mas 1, por lo que a la expresión anterior, le sumamos 1.
=ENCONTRAR(" ";B2:B26)+1
Ahora, nos devuelve 11 como posición del primer espacio.
La función EXTRAE sabemos que tiene tres argumentos, que son texto, posición inicial, y, numero de caracteres.
Pero ¿Cuántos caracteres debemos de extraer, y, a partir de que posición?
Bien, la posición donde empezar a extraer ya la tenemos, es la expresión anterior.
La cantidad de caracteres a extraer, la vamos a obtener restando la longitud de cada cadena hasta el espacio.
Vamos a crear la función.
En la celda I2, ponemos la función EXTRAE, como argumento texto, seleccionamos el rango B2:B26.
=EXTRAE(B2:B26
Como argumento posición inicial, ponemos la función ENCONTRAR que hemos realizado antes.
=EXTRAE(B2:B26;ENCONTRAR(" ";B2:B26)+1;
Como argumento numero de caracteres, ponemos la función LARGO, como argumento de LARGO, seleccionamos el rango B2:B26.
=EXTRAE(B2:B26;ENCONTRAR(" ";B2:B26)+1;LARGO(B2:B26)
Restamos la misma función ENCONTRAR que hemos usado antes, pero, sin restar 1.
=EXTRAE(B2:B26;ENCONTRAR(" ";B2:B26)+1;LARGO(B2:B26)-ENCONTRAR(" ";B2:B26))
Aceptamos, y, tenemos una matriz desbordada con la primera y segunda palabra, porque hemos extraído hasta el segundo espacio.

Usamos la función IZQUIERDA, como argumento texto es la expresión anterior, omitimos el argumento numero de caracteres, y, de forma predeterminada, extraerá 1 carácter por la izquierda.
=IZQUIERDA(EXTRAE(B2:B26;ENCONTRAR(" ";B2:B26)+1;LARGO(B2:B26)-ENCONTRAR(" ";B2:B26)))
Igualamos la expresión a la letra “S”.
=IZQUIERDA(EXTRAE(B2:B26;ENCONTRAR(" ";B2:B26)+1;LARGO(B2:B26)-ENCONTRAR(" ";B2:B26)))="S"
Tenemos una matriz desbordada en vertical donde la primera letra de la provincia empieza por “S”, y, falso donde no hay coincidencia.

Filtramos el modelo, excepto el encabezado, siempre que la expresión anterior sea igual a VERDADERO.
=FILTRAR(A2:G26;IZQUIERDA(EXTRAE(B2:B26;ENCONTRAR(" ";B2:B26)+1;LARGO(B2:B26)-ENCONTRAR(" ";B2:B26)))="S"=VERDADERO)
Aceptamos, y, ya tenemos nuestro reporte con las provincias que empiezan por “S”.

Nos traemos el encabezado.

Pues, ya lo tenemos.
Informe provincia repetida en tres columnas
Para el siguiente ejemplo, seguimos trabajando con el modelo que suelo usar habitualmente, pero, algo más corto.
Vemos que tenemos tres columnas llamadas Provincias y localidades, donde en cada columna, tenemos una provincia, o, localidad.

Debemos de crear un reporte donde en las provincias y localidades se repitan en las tres columnas.
En la celda K2, ponemos la función BUSCARX, como argumento valor buscado, seleccionamos el rango B2:B26, como argumento matriz de búsqueda, seleccionamos el rango C2:C26, como argumento matriz devuelta, volvemos a poner el rango C2:C26.
=BUSCARX(B2:B26;C2:C26;C2:C26)
Obtenemos una matriz desbordada en vertical con las provincias o localidades que se repiten en la segunda columna.

Volvemos a usar otro BUSCARX, como argumento valor buscado es la expresión anterior, como argumento matriz de búsqueda, seleccionamos el rango D2:D26, como argumento matriz devuelta, volvemos a seleccionar el rango D2:D26.
=BUSCARX(BUSCARX(B2:B26;C2:C26;C2:C26);D2:D26;D2:D26)
Obtenemos la mima matriz desbordada que la anterior, con las provincias y localidades que aparecen en la matriz desbordada obtenida anteriormente.

Usamos la función SI.ERROR, como argumento valor es la expresión anterior, como argumento valor si error, ponemos FALSO.
Filtramos el modelo, excepto los encabezados, siempre que la expresión anterior sea diferente a FALSO.
=FILTRAR(A2:I26;SI.ERROR(BUSCARX(BUSCARX(B2:B26;C2:C26;C2:C26);D2:D26;D2:D26);FALSO)<>FALSO)
Y ya lo tenemos.

Copiamos los encabezados, y, damos por finalizado nuestro ejemplo.
Miguel Angel Franco




Comentarios