En el siguiente ejemplo, vamos a ver cómo podemos solventar el error VALOR, usando la función BUSCARX.
Tenemos el siguiente modelo en rango, donde podemos ver que la última fila no está completa.
Voy a utilizar BUSCARX, para encontrar Granada, en la columna de provincia, y, que me devuelva la columna de producto.
En una celda, escribo el signo igual, seguido de BUSCARX, y, abro un paréntesis.
=BUSCARX(
Como argumento valor buscado, escribo entre comillas dobles, Granada.
=BUSCARX("Granada"
Como argumento matriz de búsqueda, me coloco en la celda B2, y, pulso CTRL más SHIFT más cursor abajo.
=BUSCARX("Granada";B2:B23
Y, como argumento matriz devuelta, me coloco en la celda D2, y, pulso CTRL más SHIFT más cursor abajo.
Cerramos paréntesis y aceptamos.
=BUSCARX("Granada";B2:B23;D2:D22)
Tenemos el error VALOR.
Este error es debido a que tanto la columna de búsqueda, como la columna devuelta, no tienen el mismo tamaño.
Podríamos arreglarlo de la siguiente manera, aunque es un poco larga, puedo preguntar de la columna provincia cual es la ultima fila, para ello, escribo el signo igual, seguido de la función FILA, y, abro un paréntesis.
=FILA(
Me coloco en la celda B2, y, presiono CTRL más SHIFT más cursor abajo.
Cierro paréntesis, y, acepto.
=FILA(B2:B23)
Obtengo una matriz desbordada con los números de filas, que llega hasta la fila 23.
Ahora, saco el valor máximo, con la función MAX.
=MAX(FILA(B2:B23))
Y me devuelve 23.
Hago lo mismo para la columna de producto, donde devuelve 22.
=MAX(FILA(D2:D22))
Vamos a trabajar con el argumento matriz devuelta, entonces, voy a preguntar si el primer resultado es mayor que el segundo resultado, con el condicional SI.
=SI(I4>J4;
Si lo es, voy a concatenar D2:D con el valor máximo del primer resultado, D2:D, debemos de ponerlo entre comillas dobles.
=SI(I4>J4;"D2:D" & I4
En caso contrario, concateno lo mismo, pero con el segundo resultado.
Cierro paréntesis, y, acepto.
=SI(I4>J4;"D2:D" & I4; "D2:D" & J4)
Vemos que nos devuelve la siguiente referencia, porque se cumple la condición.
Vemos que se alinea a la izquierda, quiere decir que esta en formato de texto, la cual no podemos usarla, para poder usarla debemos de hacer uso de la función INDIRECTO, cosa que haremos, pero en la función inicial.
Vamos a la función inicial, el argumento valor buscado, y, matriz de búsqueda no cambian.
=BUSCARX("Granada";B2:B23;
Ahora, en el argumento matriz devuelta, vamos a hacer las mismas preguntas que hemos hecho antes, pero para rescatar el valor, usaremos la función INDIRECTO.
=BUSCARX("Granada";B2:B23;SI(MAX(FILA(B2:B23))>MAX(FILA(D2:D22));INDIRECTO("D2:D"&MAX(FILA(B23)));INDIRECTO("D2:D"&MAX(FILA(D2:D22)))))
Aceptamos, y, vemos que tenemos el producto.
Pero, si no queremos marearnos mucho la cabeza, podemos poner el modelo en formato de tabla, para ello, con una celda dentro del modelo, pulsamos CTRL más T.
Se abre la ventana de crear tabla, marcamos la tabla tiene encabezados, y, aceptamos.
Como argumento valor buscado, ponemos Granada, entre comillas dobles.
=BUSCARX("Granada";
Como argumento matriz de búsqueda, señalamos el encabezado de la columna provincia.
=BUSCARX("Granada";Tabla1[Provincia];
Y, como argumento matriz devuelta, señalamos el encabezado de la columna producto.
=BUSCARX("Granada";Tabla1[Provincia];Tabla1[Producto])
Cerramos paréntesis y aceptamos, y, vemos que nos devuelve el producto.
Esto es debido a que cuando hemos seleccionado la columna de producto, ha seleccionado toda la columna, haya o no haya datos.
コメント