Un mismo proveedor puede facturarte 40 veces en un mes. Antes de armar la póliza o correr el cálculo de impuestos, lo que necesitas no es la lista de facturas — es el catálogo de proveedores distintos que hay detrás. En mi papel de trabajo de impuestos ya no lo armo a mano: pego los XML de los CFDI y una combinación de ÚNICOS, FILTRAR, ORDENAR y ELEGIRCOLS lo construye sola.
El problema real: facturas vs. proveedores
Un lote de CFDI de un mes normal trae decenas de facturas, pero solo un puñado de proveedores reales detrás. Si uno de esos RFC no está dado de alta en el catálogo de CONTPAQi, la importación se atora ahí — y revisar RFC por fila en 300 renglones no es una forma seria de encontrarlo.

Cómo lo resolvía antes (LEGACY)
Esto sigue funcionando si trabajas en una licencia perpetua sin matrices dinámicas — lo dejo aquí como legacy, no como recomendación:
- Filtro avanzado: Datos → Avanzado → Acción "Copiar a otro lugar" → Rango de la lista: la columna de RFC → Copiar a: destino → marcar "Solo registros únicos" → Aceptar.
- Fórmula matricial (Ctrl+Shift+Entrar, se copia hacia abajo):
=IFERROR(INDEX(RFC,MATCH(0,COUNTIF($B$1:B1,RFC),0)),"") - Macro, para quien prefiere un botón: RemoveDuplicates nativo (sobre una copia, nunca sobre el original) o Scripting.Dictionary para lotes grandes. El módulo completo, con las dos versiones, está listo para importar en el Editor de VBA.
Los tres llegan al mismo resultado. El costo es que hay que reconstruirlos cada vez que crece el lote.
Cómo lo resuelvo hoy: ÚNICOS

=UNICOS(RFC) se deja caer sobre la columna de RFC del lote parseado y la lista de proveedores
distintos se deriva sola, sin matricial y sin reconstruir nada cuando entra un CFDI nuevo.
La trampa está en el tercer argumento, exactamente_una_vez. No significa "quítame los repetidos": en VERDADERO, ÚNICOS descarta cualquier RFC que se haya repetido — incluida su primera aparición. Si lo que quieres es el catálogo completo de proveedores del mes, ese argumento se queda vacío; VERDADERO es para otra pregunta distinta: qué proveedores facturaron una sola vez en todo el periodo.
ÚNICOS vive en matrices dinámicas: en una licencia perpetua (2016/2019/2021/2024) no aparece en la lista de funciones, sin error de por medio — simplemente no está.
Un paso más: FILTRAR + ORDENAR + ELEGIRCOLS
=CHOOSECOLS(SORT(UNIQUE(HSTACK(Datos!$B$9:$B$32,Datos!$C$9:$C$32))),2,1)
en la barra de fórmulas, con el catálogo resultante (Proveedor, RFC) derramado y ordenado
alfabéticamente debajo.
Esta es la parte que ya no es solo el truco de la lista de proveedores — es la entrada real de mi
papel de trabajo de impuestos: pego los XML, y =ELEGIRCOLS(ORDENAR(ÚNICOS(APILARH(RFC,Proveedor))),2,1)
arma el catálogo completo, ordenado alfabéticamente y con el nombre del proveedor primero, listo
para que el resto de la hoja calcule sobre él. Con FILTRAR de por medio (ÚNICOS(FILTRAR(...)))
lo acoto a un mes específico cuando necesito revisar solo julio, por ejemplo.
Resultado
De pegar el lote de CFDI a tener el catálogo de proveedores ordenado y listo para el cálculo: una celda, sin tabla dinámica, sin filtro avanzado manual, sin volver a tocar la fórmula cuando el lote crece.
Archivo de práctica aquí
¿Necesitas esto automatizado para tu despacho?
Si llevas la contabilidad de varios clientes y armar el catálogo de proveedores cada mes te sigue tomando tiempo, escríbeme — es exactamente el tipo de papel de trabajo que construyo.