La primera solución compara los registros del sistema contra SAT. Para conocer también qué facturas aparecen en SAT pero faltan en nuestro sistema, ampliaremos la fórmula.
Utilizaremos LET para organizar los cálculos, FILTRAR para recuperar los registros faltantes, APILARH para incorporar una columna descriptiva y APILARV para unir ambos resultados.
=LET(
sistema,tblSistema,
sat,tblSAT,
uuidSistema,tblSistema[UUID],
uuidSAT,tblSAT[UUID],
faltaSAT,ESERROR(COINCIDIR(uuidSistema,uuidSAT,0)),
faltaSistema,ESERROR(COINCIDIR(uuidSAT,uuidSistema,0)),
datosSistema,FILTRAR(sistema,faltaSAT,APILARH("","","")),
datosSAT,FILTRAR(sat,faltaSistema,APILARH("","","")),
resultadoSistema,APILARH(
datosSistema,
SI(ELEGIRCOLS(datosSistema,1)<>"","Falta factura en SAT","")
),
resultadoSAT,APILARH(
datosSAT,
SI(ELEGIRCOLS(datosSAT,1)<>"","Falta factura en sistema","")
),
resultado,APILARV(resultadoSistema,resultadoSAT),
FILTRAR(resultado,ELEGIRCOLS(resultado,1)<>"","Sin diferencias")
)
1. Definir las fuentes
LET almacena las tablas originales y las columnas UUID que utilizaremos como identificadores.
2. Encontrar las diferencias
COINCIDIR y ESERROR identifican los UUID faltantes en cada dirección.
3. Recuperar los registros
FILTRAR obtiene las filas completas que no tienen correspondencia en la otra tabla.
4. Agregar una descripción
ELEGIRCOLS recupera el UUID y permite que SI identifique las filas válidas. APILARH añade una columna con el origen de cada diferencia.
5. Unir ambos resultados
APILARV coloca los dos conjuntos de registros uno debajo del otro.
6. Limpiar el reporte
Un último FILTRAR elimina las filas auxiliares vacías. Si no hay diferencias, devuelve el mensaje correspondiente.
¿Por qué utilizamos APILARH con valores vacíos?
Cuando una búsqueda no encuentra diferencias, FILTRAR utiliza una fila auxiliar de tres columnas vacías. Esto permite mantener la estructura esperada para los pasos posteriores. Al final, eliminamos esas filas auxiliares para que no aparezcan en el reporte.