top of page

Normalizar modelo 2 (BYROW).

Tenemos el siguiente modelo, donde tenemos un país, la población del año 2022, la tasa de crecimiento, el área y la densidad por metro cuadrado, todos los países, y, sus datos están en una sola columna.


























Debemos de crear un modelo, donde en la primera columna aparezcan los países, en la segunda columna, la población, en la tercera la tasa de crecimiento, en la cuarta columna, el área, y, en la quinta columna la densidad, el resultado debe de ser como el que sigue:











Empecemos…


Ya sabemos que cada carácter en Excel, le corresponde un código, conocido como Unicode o código ASCII.


A la letra A le corresponde el código 65, y, a la letra Z, le corresponde el código 90.


En la celda D3, usamos la función BYROW, como argumento array, seleccionamos el rango B3:B52, como argumento función, ponemos LAMBDA, y, declaramos una variable.


=BYROW(B3:B52;LAMBDA(x


Como argumento calculo de LAMBDA, usamos el condicional SI, como argumento prueba lógica, ponemos el operador lógico Y, como argumento valor logico1, ponemos la función CODIGO, como argumento de CODIGO, usamos IZQUIERDA, como argumento texto, ponemos la variable “x”, e, ignoramos le argumento número de caracteres, ponemos el símbolo de comparación mayor o igual (>=), y, el número 65.


=BYROW(B3:B52;LAMBDA(x;SI(Y(CODIGO(IZQUIERDA(x))>=65


Como argumento valor logico2, volvemos a poner CODIGO e IZQUIERDA, el símbolo de comparación menor o igual (<=), y, el valor 90.


=BYROW(B3:B52;LAMBDA(x;SI(Y(CODIGO(IZQUIERDA(x))>=65;CODIGO(IZQUIERDA(x))<=90)


Es decir, vamos a comparar el código de cada primer código del rango B3:B52, entre el valor 65 y 90, es decir, preguntamos si el primer carácter es una letra.


Como argumento valor si verdadero, ponemos la variable “x”, como argumento valor si falso, ponemos un error.


=BYROW(B3:B52;LAMBDA(x;SI(Y(CODIGO(IZQUIERDA(x))>=65;CODIGO(IZQUIERDA(x))<=90);x;NOD())))


Obtenemos una matriz desbordada en vertical con el país, y, error donde no hay coincidencia.





















Usamos la función ENCOL, e, ignoramos blancos y errores.


=ENCOL(BYROW(B3:B52;LAMBDA(x;SI(Y(CODIGO(IZQUIERDA(x))>=65;CODIGO(IZQUIERDA(x))<=90);x;NOD())));3)


Ya tenemos los países.















Cada país lleva asociado cuatro filas, que son la población, la tasa de crecimiento, el área, y, la densidad.


Quiere decir, que, si localizamos la fila de cada país, y, sumamos 1 a la fila, obtenemos la población, si sumamos 2, obtenemos la tasa de crecimiento, y, así con el resto.


En la celda E3, tenemos que usar el mismo BYROW, pero, fijamos B3:B52, que hemos usado antes.


Cambiamos el argumento valor si verdadero, y, ponemos la función FILA, como argumento ponemos la variable “x”, y, sumamos la columna de A1, es el único cambio que debemos de hacer.


=ENCOL(BYROW($B$3:$B$52;LAMBDA(x;SI(Y(CODIGO(IZQUIERDA(x))>=65;CODIGO(IZQUIERDA(x))<=90);FILA(x)+COLUMNA(A1);NOD())));3)


Tenemos una matriz desbordada con las filas a rescatar












Después del signo igual, usamos INDICE, como argumento matriz, seleccionamos la columna B (B:B), y, fijamos, como argumento número de fila, es la expresión anterior, ignoramos el argumento número de columna.


=INDICE($B:$B;ENCOL(BYROW($B$3:$B$52;LAMBDA(x;SI(Y(CODIGO(IZQUIERDA(x))>=65;CODIGO(IZQUIERDA(x))<=90);FILA(x)+COLUMNA(A1);NOD())));3))


Aceptamos, arrastramos hacia la derecha, y, ya lo tenemos.












Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page