Cruzar albaranes entre hojas con AJUSTARFILAS y BUSCARX
Un miembro de la comunidad tiene números de albarán en una hoja y, en otra hoja, varias columnas con pares albarán-importe (distribuidos horizontalmente). Necesita traer los importes correspondientes a la primera hoja.
Leo resuelve el problema en una sola fórmula combinando ENCOL, AJUSTARFILAS y BUSCARX:
``
=LET(
m; AJUSTARFILAS(ENCOL(Importes!A2:J20); 2);
BUSCARX(A2:A35; TOMAR(m;;1); TOMAR(m;;-1); "")
)
`
La lógica es elegante: ENCOL pone todos los datos de la hoja Importes en una sola columna, y AJUSTARFILAS los reorganiza en una matriz de 2 columnas (albaranes a la izquierda, importes a la derecha). Con esa estructura normalizada, BUSCARX hace el resto.
Leo también aporta una versión avanzada que usa LAMBDA para filtrar dinámicamente por cabecera de columna, haciéndola resistente a cambios en la estructura de datos:
`
=LET(
F; LAMBDA(x; ENCOL(FILTRAR(Importes!A2:J20; Importes!A1:J1=x)));
BUSCARX(A2:A35; F(A1); F(B1); "")
)
`
Curiosidad: Leo señala que AJUSTARFILAS en realidad "ajusta columnas" y AJUSTARCOLS` "ajusta filas" — una inconsistencia de nomenclatura de Microsoft que suele confundir.
El problema: importes repartidos en horizontal
Un miembro de la comunidad tenía números de albarán en una hoja y, en otra, varias columnas con pares albarán-importe distribuidos horizontalmente (bloque tras bloque, a lo ancho de la hoja). Necesitaba traer a la primera hoja el importe que corresponde a cada albarán, pero como los datos no estaban en dos columnas limpias sino esparcidos, un BUSCARX directo no tenía dónde mirar.
La solución de Leo: normalizar antes de buscar
La idea es reorganizar los datos en una estructura de dos columnas y solo entonces buscar:
`` =LET( m; AJUSTARFILAS(ENCOL(Importes!A2:J20); 2); BUSCARX(A2:A35; TOMAR(m;;1); TOMAR(m;;-1); "") ) ``
El flujo es elegante. Primero ENCOL(Importes!A2:J20) colapsa todo el bloque disperso en una sola columna, poniendo un dato debajo de otro. Después AJUSTARFILAS(...; 2) reorganiza esa columna larga en una matriz de 2 columnas: albaranes a la izquierda, importes a la derecha. Con los datos ya normalizados, BUSCARX hace lo de siempre: TOMAR(m;;1) es la columna de búsqueda (los albaranes) y TOMAR(m;;-1) es la de resultados (los importes, tomando la última columna).
La clave está en no pelearse con la disposición original: se aplana y se rehace con la forma que BUSCARX espera.
Versión robusta ante cambios de estructura
Leo aportó además una variante que no depende de que las columnas estén en una posición fija, sino que filtra por cabecera:
`` =LET( F; LAMBDA(x; ENCOL(FILTRAR(Importes!A2:J20; Importes!A1:J1=x))); BUSCARX(A2:A35; F(A1); F(B1); "") ) ``
La LAMBDA F recibe el nombre de una cabecera, filtra las columnas cuya fila de encabezado coincide (Importes!A1:J1=x) y las apila con ENCOL. Así, si mañana se añaden o mueven columnas en la hoja de importes, la fórmula sigue funcionando mientras las cabeceras se llamen igual.
Curiosidad: nombres al revés
Leo señaló un detalle que confunde a mucha gente: AJUSTARFILAS en realidad reorganiza fijando el número de columnas, y AJUSTARCOLS fija el número de filas. Es una inconsistencia de nomenclatura de Microsoft. Si una de las dos no te da la forma esperada, prueba la otra: casi siempre el lío es este.
Funciones clave
ENCOL: aplana un rango disperso en una sola columna, base para poder reestructurarlo.AJUSTARFILAS: reorganiza esa columna en una matriz con el número de columnas indicado.BUSCARX: la búsqueda final, ya sobre datos normalizados.TOMAR/FILTRAR: seleccionan las columnas de búsqueda y resultado, por posición o por cabecera.
Conclusión
Cuando los datos no vienen con la forma que necesita tu fórmula, muchas veces la solución no es una fórmula más lista, sino normalizar primero: aplanar con ENCOL y rehacer con AJUSTARFILAS. A partir de ahí, BUSCARX es trivial. Y si quieres que aguante cambios en la hoja origen, filtra por cabecera con una LAMBDA. Este tipo de reestructuraciones salen constantemente en la comunidad de InflueXcel.
Más casos con estas funciones
Más contenido de Excel en InflueXcel
- Filtro multicriteria dinámico con LET, FILTRAR y LAMBDA CasoHector comparte con la comunidad una fórmula avanzada para filtrar una tabla de productos/servicios por múltiples criterios opcionales (clav
- Funciones personalizadas en Excel: LET, LAMBDA y recursividad TutorialCómo pasar de una fórmula escrita a mano a una función propia que puedes llamar por su nombre en cualquier libro. Los tres vídeos de esta pá
- Cómo dejar una celda realmente vacía en fórmulas SI, BUSCARX y FILTRAR CasoInteresante problema planteado por un miembro de la comunidad: quiere que sus fórmulas devuelvan una celda realmente vacía cuando no hay res
- Estructurar correctamente LAMBDA con LET y parámetros opcionales CasoNuevo reto de Excel resuelto por la comunidad: un miembro está creando una función LAMBDA personalizada para calcular potencia de bombeo (fó
- Encontrar en qué columna está el máximo: BYCOL + BUSCARX vs TOMAR + SI CasoA partir de una tabla de datos donde cada fila tiene valores distribuidos en varias columnas con cabeceras compuestas (ej: "Madrid - Ventas"
- Convertir numeros a letras con LAMBDA y LET en Excel CasoOscar plantea una necesidad muy comun en entornos contables y administrativos: convertir cantidades numericas a su representacion en texto (
- FILTRAR con ELEGIR y BUSCARX para consultas cruzadas entre tablas CasoInteresante problema planteado por Hector sobre cómo construir una consulta dinámica que combine columnas de una tabla con datos cruzados de
- Filtrar una tabla por una lista de valores: una LAMBDA propia y su inversa TutorialTe pasan una lista de 30 números de albarán y hay que sacar esas filas de una tabla de miles. Con el autofiltro es marcar casillas una a una
- Por qué SUMAR.SI falla al arrastrar y cómo resolverlo con AGRUPARPOR CasoUn miembro de la comunidad comparte un archivo con datos de nóminas de varias empresas (cantidad, salario base, bonificación, vacaciones, de
- Categorizar automáticamente conceptos con BUSCARX REGEX y MAP CasoUn miembro de la comunidad tiene una lista de compra (conceptos como "leche entera", "pan integral", etc.) y una tabla de categorías donde c