Al escribir fórmulas debemos evitar siempre que podamos anidar funciones SI (sobre todo cuando tenemos información que se repite).
Por favor, prueba la siguiente fórmula:
=SI.ERROR(
LET(
id, B3,
fecha_ref, F3,
rango_ids, '[Base Snte 05 Coah 2.xlsx]Pagos'!$F$2:$F$10000,
rango_fechas, '[Base Snte 05 Coah 2.xlsx]Pagos'!$K$2:$K$10000,
rango_resultado, '[Base Snte 05 Coah 2.xlsx]Pagos'!$D$2:$D$10000,
diferencia, ABS(rango_fechas - fecha_ref),
filtro, (rango_ids = id) * diferencia,
min_dif, MIN.SI.CONJUNTO(diferencia, rango_ids, id),
fila, COINCIDIR(min_dif, filtro, 0),
INDICE(rango_resultado, fila)
),
"No encontrado")Coméntanos si funciona.
Por
Sergio, · publicado
Hola a tod@s
Me adelanto agradeciendo su tiempo ante la siguiente consulta en Access Vista SQL.
Tengo la siguiente sintaxis el cual funciona correctamente:
SELECT CABECERAMOVIMIENTO.[TIPO DOCUMENTO], CLIENTE.[CODIGO REL] AS [COD CLIENTE], CABECERAMOVIMIENTO.[FOLIO], IIF(DETALLEMOVIMIENTO.[CODIGO] ="333115-OOO", "333115-O", DETALLEMOVIMIENTO.[CODIGO]) AS [CODIGOPRODUCTO], DETALLEMOVIMIENTO.[ZETA], STOCKS.[ESTADO] FROM (((CABECERAMOVIMIENTO INNER JOIN DETALLEMOVIMIENTO ON DETALLEMOVIMIENTO.[FOLIO] = CABECERAMOVIMIENTO.[FOLIO] AND DETALLEMOVIMIENTO.[TIPO DOCUMENTO] = CABECERAMOVIMIENTO.[TIPO DOCUMENTO]) INNER JOIN CLIENTE ON CLIENTE.[RUTPASS] = CABECERAMOVIMIENTO.[CLIENTE]) INNER JOIN STOCKS ON STOCKS.[ZETA] = DETALLEMOVIMIENTO.[ZETA]) WHERE CABECERAMOVIMIENTO.[TIPO DOCUMENTO] = 6 And (CABECERAMOVIMIENTO.[ESTADO DATOS] = "O" Or CABECERAMOVIMIENTO.[ESTADO DATOS] = "V" Or CABECERAMOVIMIENTO.[ESTADO DATOS] = "B") GROUP BY CABECERAMOVIMIENTO.[TIPO DOCUMENTO], CLIENTE.[CODIGO REL], CABECERAMOVIMIENTO.[FOLIO], DETALLEMOVIMIENTO.[CODIGO], DETALLEMOVIMIENTO.[ZETA], STOCKS.[ESTADO]
Ahora el detalle está en filtrar por el Alias [CODIGOPRODUCTO] = 333115-O
Espero haberme hecho entender con mi breve consulta.
Saludos