Uso de IA en el trabajo

Cómo probar una fórmula de Excel sugerida por IA con celdas vacías, cero, texto y fechas

No conviene confiar en una fórmula de Excel sugerida por IA después de probarla solo con filas normales. Usa una pequeña hoja sintética para probar celdas vacías, cero, texto y fechas, y contrasta después los resultados esperados con un script sencillo de Python.

Ver el índice

La traducción se ha realizado con IA. Comprueba el código, las unidades y los valores junto con el original. La revisión por hablantes nativos de cada idioma aún no se ha completado. English

Para quién esPersonas que usan un asistente de chat con IA para crear fórmulas de Excel y quieren probarlas antes de aplicarlas a archivos de trabajo reales.

Preparación
  • Excel u otra hoja de cálculo compatible con fórmulas habituales de Excel
  • Python 3.12

01Por qué una fórmula que funciona en una fila aún puede estar mal

Un asistente de chat con IA puede sugerir una fórmula de Excel que parece correcta con datos normales, pero que se comporta de otra forma cuando una celda está vacía, el denominador es cero, aparece texto donde se esperaba un número o una fecha está almacenada como número de serie de Excel. Estos casos importan porque los errores de una hoja de cálculo no siempre aparecen como #DIV/0! o #VALUE!. Una fórmula también puede devolver un número aparentemente razonable que sea incorrecto desde el punto de vista lógico.

El ejemplo siguiente es sintético. Supongamos que la columna A contiene un valor anterior, la columna B un valor nuevo y la columna C debe calcular el cambio porcentual como (nuevo - anterior) / anterior. La regla de trabajo es que los vacíos se mantengan vacíos, los denominadores cero y los valores no numéricos se marquen como CHECK y las fechas no se traten como mediciones numéricas normales.

02Crea una pequeña hoja con casos límite deliberados

Antes de aplicar la fórmula a un libro real, crea una hoja pequeña de prueba. Usa las siguientes filas para ver juntos valores normales y casos habituales de fallo.

FilaA: Valor anteriorB: Valor nuevoResultado esperado
210012020%
350500%
425blank
5010CHECK
6pending10CHECK
7100n/aCHECK
82026-10-012026-10-08CHECK

Las dos primeras filas establecen el comportamiento normal: (120 - 100) / 100 = 0.20, es decir, 20%, y (50 - 50) / 50 = 0%. Las demás filas son pruebas, no datos normales de producción.

03Pide una fórmula a la IA y revisa sus supuestos

Una petición sencilla a un asistente de chat con IA podría ser: calcula el cambio porcentual de A2 a B2 y deja el resultado vacío si se produce un error.

Esta fórmula funciona para 100 a 120 y para 50 a 50. Sin embargo, IFERROR oculta varios problemas distintos detrás del mismo resultado vacío. Un denominador cero, una entrada de texto u otro error de fórmula pueden desaparecer en lugar de quedar identificados para revisión. Más importante aún, Excel almacena internamente las fechas como números de serie. Si A2 y B2 contienen fechas reales de Excel, la resta y la división pueden producir un porcentaje numérico en lugar de un error evidente.

Por tanto, que el cálculo se complete correctamente no demuestra que las entradas pertenezcan al tipo de datos previsto.

04Haz la fórmula más explícita y prueba cada fila

Para las reglas indicadas, puede usarse una fórmula más explícita:

Esta versión distingue entre vacíos, entradas no numéricas y denominador cero. Por tanto, las filas 2 a 7 se comportan como se pretende. Aplica formato Percentage a los resultados numéricos de la columna C si quieres mostrar 0.20 como 20%.

La fila 8 revela una limitación importante. Las fechas de Excel son números internamente, por lo que ISNUMBER devuelve TRUE para una fecha real. La fórmula defensiva todavía puede calcular con fechas. Una fórmula genérica no puede determinar de forma fiable si un número de serie representa una medición numérica válida o una fecha no deseada únicamente a partir de su valor.

05Contrasta la regla prevista con Python

Como segunda comprobación, guarda los casos sintéticos en formula_cases.csv con las columnas row,old_value,new_value. Mantén 2026-10-01 y 2026-10-08 tal como aparecen. El siguiente script, basado únicamente en la biblioteca estándar, aplica la regla de forma independiente: los vacíos se mantienen como blank, las fechas ISO se marcan CHECK, los valores no numéricos se marcan CHECK, un valor anterior igual a 0 se marca CHECK y los números válidos se usan para calcular el cambio porcentual.

python
from pathlib import Path
from decimal import Decimal, InvalidOperation
from datetime import date
import csv
import sys

INPUT_PATH = Path("formula_cases.csv")
OUTPUT_DIR = Path("outputs")
REPORT_PATH = OUTPUT_DIR / "formula_check_report.txt"

if not INPUT_PATH.is_file():
    sys.exit("Missing input file: formula_cases.csv")

if OUTPUT_DIR.exists():
    sys.exit("Stop: outputs folder already exists. Remove or rename it manually first.")


def is_iso_date(value):
    try:
        date.fromisoformat(value)
        return True
    except ValueError:
        return False


def check_change(old_text, new_text):
    old_text = old_text.strip()
    new_text = new_text.strip()

    if old_text == "" or new_text == "":
        return "blank"

    if is_iso_date(old_text) or is_iso_date(new_text):
        return "CHECK"

    try:
        old = Decimal(old_text)
        new = Decimal(new_text)
    except InvalidOperation:
        return "CHECK"

    if old == 0:
        return "CHECK"

    change = (new - old) / old * Decimal("100")
    return f"{change:.2f}%"


results = []

with INPUT_PATH.open("r", encoding="utf-8", newline="") as file:
    reader = csv.DictReader(file)
    required = {"row", "old_value", "new_value"}

    if reader.fieldnames is None or not required.issubset(reader.fieldnames):
        sys.exit("CSV must contain: row, old_value, new_value")

    for record in reader:
        result = check_change(record["old_value"], record["new_value"])
        results.append(
            f"Row {record['row']}: "
            f"old={record['old_value']!r}, "
            f"new={record['new_value']!r} -> {result}"
        )

OUTPUT_DIR.mkdir()
REPORT_PATH.write_text("\n".join(results) + "\n", encoding="utf-8")
print(f"Created: {REPORT_PATH}")

Para las siete filas sintéticas, los resultados esperados de Python son 20.00%, 0.00%, blank, CHECK, CHECK, CHECK y CHECK. Compara los resultados fila por fila en lugar de comprobar únicamente si Excel muestra un error.

06Errores comunes al comprobar fórmulas sugeridas por IA

  • Probar únicamente una fila normal y después copiar la fórmula en miles de filas.
  • Usar IFERROR para ocultar todos los fallos sin distinguir entre datos ausentes y datos no válidos.
  • Olvidar que dividir por cero requiere una regla de trabajo explícita.
  • Suponer que las celdas que parecen numéricas o tienen formato numérico siempre contienen el tipo de dato previsto.
  • Olvidar que las fechas de Excel se almacenan como números y pueden participar en operaciones aritméticas.
  • Comparar porcentajes mostrados sin comprobar si el valor interno es 0.20, 20 u otra escala.
  • Modificar la fórmula hasta que desaparezcan los errores visibles en lugar de definir primero los resultados esperados.

Python resulta útil porque permite implementar la misma regla de forma independiente. No conviene reproducir literalmente la fórmula de Excel. Si ambas implementaciones comparten el mismo supuesto incorrecto, la comprobación cruzada puede repetir exactamente el mismo error.

07Usa una lista final para probar la fórmula

  1. Escribe en lenguaje normal la regla de cálculo prevista antes de aceptar una fórmula.
  2. Crea filas de prueba con valores normales, vacíos, cero, texto y fechas.
  3. Calcula manualmente los resultados sencillos esperados.
  4. Decide si los errores deben quedar vacíos, marcarse o detener el proceso en lugar de ocultarlos automáticamente.
  5. Comprueba cómo se representan las fechas y otros tipos especiales de Excel.
  6. Contrasta la regla con un cálculo independiente cuando el resultado sea importante.
  7. Solo después aplica la fórmula al conjunto completo de datos.

La idea principal es que verificar una fórmula no es solo un problema de sintaxis, sino también de tipos de datos y reglas de trabajo. Una fórmula generada por IA es una implementación provisional. Las pruebas con casos límite permiten comprobar si esa implementación coincide con el comportamiento que realmente necesitas.

Registro de ejecución y verificación

2026-09-21 · hand-checked example · Python 3.12

  • Se comprobó manualmente que (120 - 100) / 100 = 0.20, es decir, 20%.
  • Se comprobó manualmente que (50 - 50) / 50 = 0, es decir, 0%.
  • Se comprobó que una entrada vacía debe producir blank según la regla sintética indicada.
  • Se comprobó que un valor anterior de 0 no puede usarse como denominador y por eso debe marcarse CHECK.
  • Se comprobó que pending y n/a son entradas no numéricas y deben marcarse CHECK.
  • Se comprobó que la regla de Python detecta explícitamente las fechas ISO 2026-10-01 y 2026-10-08 y marca la fila como CHECK.
  • Se comprobó que el script lee formula_cases.csv, escribe únicamente outputs/formula_check_report.txt y se detiene si la carpeta outputs ya existe.
Límites de la verificación
  • El código fue revisado y el pequeño ejemplo se comprobó manualmente, pero yo no ejecuté el código.
  • El ejemplo de Python reconoce fechas ISO como 2026-10-01, pero no intenta reconocer todos los formatos regionales posibles.
  • Excel almacena las fechas reales como números de serie, por lo que ISNUMBER por sí solo no puede distinguir una fecha de una medición numérica ordinaria.
  • Exportar a CSV puede cambiar cómo se representan las fechas y el formato de las celdas, por lo que una comprobación con CSV no inspecciona el formato original de Excel.
  • Los libros reales pueden necesitar pruebas adicionales para errores, porcentajes, fórmulas que devuelven cadenas vacías, formatos numéricos regionales y reglas de validación específicas del dominio.

Criterios de redacción y verificación de todo el sitio

Fuentes de referencia

Las explicaciones y los ejemplos son de elaboración propia. Puedes consultar los comportamientos y conceptos relacionados en las siguientes fuentes oficiales.