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