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

ChatGPT Python tool · Python 3.x · standard library pathlib, decimal, datetime, csv, sys

  • La primera ejecución terminó correctamente y creó outputs/formula_check_report.txt.
  • Los resultados generados fueron exactamente: Row 2 = 20.00%, Row 3 = 0.00%, Row 4 = blank, Rows 5-8 = CHECK.
  • Los resultados coinciden con la secuencia indicada en el artículo: 20.00%, 0.00%, blank, CHECK, CHECK, CHECK, CHECK.
  • La fila de fechas ISO 2026-10-01 a 2026-10-08 se detectó correctamente y se marcó como CHECK.
  • El archivo de origen formula_cases.csv permaneció idéntico byte por byte después de la ejecución.
  • Una segunda ejecución se detuvo con el mensaje indicado porque outputs ya existía, por lo que el informe anterior no se sobrescribió.
  • El script utiliza únicamente módulos de la biblioteca estándar y su comportamiento coincide con la regla de negocio indicada para el CSV sintético proporcionado.
Límites de la verificación
  • La prueba en Python verifica la regla independiente del CSV, no el comportamiento de las fórmulas de Excel dentro de un libro real de Excel.
  • La afirmación del artículo de que las fechas reales de Excel son valores seriales numéricos y, por tanto, pasan ISNUMBER no se ejecutó en Excel durante esta verificación.
  • El entorno de Python emitió en stderr una advertencia no relacionada del calentamiento del entorno de hojas de cálculo; no afectó al script del artículo ni a su salida.

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.