Obtener la partida activa de un depósito con BUSCARX: concatenación y búsqueda inversa

Un miembro de la comunidad gestiona un inventario de depósitos (AFORO) con una tabla llamada PARTIDAS_AGE. Cada depósito tiene múltiples partidas con fecha de apertura y fecha de cierre. El reto: obtener automáticamente la partida activa (la más reciente, o la que aún no tiene fecha de cierre) para cada depósito.

Hugo propone una primera solución usando BUSCARX con una condición matricial que maximiza la fecha de apertura dentro del depósito:

``
=BUSCARX(
1;
(MAX(SI(PARTIDAS_AGE[Depósito]=[@Deposito]; PARTIDAS_AGE[Fecha apertura]; 0))
= PARTIDAS_AGE[Fecha apertura])
(PARTIDAS_AGE[Depósito]=[@Deposito]);
PARTIDAS_AGE[Partida]; 0
)
`

Leo simplifica el enfoque usando BUSCARX con modo de búsqueda inversa (-1) y concatenación para un BUSCARX multicriteria:

`
=BUSCARX(
[@Deposito] & MAX(([@Deposito]=PARTIDAS_AGE[Depósito]) PARTIDAS_AGE[Fecha de Cierre]);
PARTIDAS_AGE[Depósito] & PARTIDAS_AGE[Fecha de Cierre];
PARTIDAS_AGE[Partida]; "";;-1
)
`

La idea: concatenar depósito + fecha de cierre para crear una clave compuesta, y buscar la que tenga la fecha máxima. Si hay varias con la misma fecha, devuelve la última.

John mejora la concatenación añadiendo un delimitador entre los valores para evitar falsos positivos (cuando números de depósito y fechas podrían combinarse en coincidencias falsas):

`
=LET(
d; [@Deposito];
rd; PARTIDAS_AGE[Depósito];
rc; PARTIDAS_AGE[Fecha de Cierre];
BUSCARX(d & "-" & MAX((d=rd) rc); rd & "-" & rc; PARTIDAS_AGE[Partida];;;-1)
)
`

También propone una alternativa con LET que busca directamente por fecha de apertura máxima:

`
=LET(
b; PARTIDAS_AGE[Fecha apertura] (PARTIDAS_AGE[Depósito]=[@Deposito]);
SI(MAX(b); BUSCARX(MAX(b); b; PARTIDAS_AGE[Partida];;;-1); "")
)
`

Tanto John como Leo coinciden en que la versión más limpia es la última (con LET), por su claridad y por evitar el problema de concatenaciones sin delimitador.

Técnicas destacadas:

- BUSCARX con modo -1 (búsqueda del último al primero) para obtener el registro más reciente
- Concatenación multicriteria en BUSCARX como alternativa a INDICE+COINCIDIR
- Delimitadores en concatenaciones para evitar falsos positivos
- LET` para nombrar variables y mejorar legibilidad

Más contenido de Excel en InflueXcel