Busca en nuestra documentación, explora nuestros recursos y visita nuestro Foro de la Comunidad para obtener información más detallada
Última actualización: 23 Apr 2026
Los cálculos se pueden usar dentro de tu formulario para derivar nuevas variables, crear lógica de formulario avanzada y mostrar resultados a los encuestados durante la recolección de datos.
Los cálculos se procesan dentro del formulario, lo que ayuda a ahorrar tiempo durante el análisis de datos. Los resultados se almacenan como nuevas columnas en el conjunto de datos final y se pueden usar en todo el formulario para aplicar lógica de omisión, establecer restricciones o mostrar contenido dinámico en etiquetas de preguntas y notas.
Este artículo explica cómo agregar cálculos en un XLSForm, abarcando tanto la aritmética básica como las expresiones más avanzadas.
Nota: Este artículo se centra en agregar cálculos en XLSForm. Para aprender a agregar cálculos en el KoboToolbox Formbuilder, consulta Agregar cálculos con el Formbuilder.
Para practicar con cálculos en XLSForm, consulta el curso XLSForm Fundamentals de la KoboToolbox Academy.
Las expresiones de cálculo se construyen usando una combinación de referencias a preguntas, operadores matemáticos, funciones y constantes.
Para agregar un cálculo en tu XLSForm:
En la columna type de la hoja survey, ingresa calculate para agregar un tipo de pregunta de cálculo.
Ingresa un name para la pregunta calculate.
Como el cálculo no se muestra en el formulario, la pregunta calculate no requiere una etiqueta.
Agrega una columna calculation en la hoja survey.
En la columna calculation, ingresa la expresión de cálculo.
Los cálculos pueden ir desde cálculos aritméticos básicos hasta cálculos avanzados que usan funciones y expresiones regulares.
Para hacer referencia al resultado del cálculo en el resto del formulario (por ejemplo, dentro de una pregunta de tipo nota, en la etiqueta de una pregunta o en la lógica del formulario), usa el formato de referencia a preguntas ${question_name}, donde question_name es el nombre de la pregunta calculate.
hoja survey
type |
name |
label |
calculation |
|---|---|---|---|
integer |
bags |
Total number of bags sold |
|
decimal |
price |
Price per bag |
|
calculate |
total_amount |
${bags} * ${price} |
|
note |
display_total |
The total is ${total_amount} |
|
survey |
Los cálculos en XLSForm pueden ir desde cálculos aritméticos simples hasta la derivación avanzada de variables.
Los cálculos aritméticos permiten realizar operaciones básicas usando los siguientes operadores:
Operador |
Descripción |
|---|---|
+ |
Suma |
- |
Resta |
* |
Multiplicación |
div |
División |
mod |
Módulo (calcula el resto de una división) |
Los cálculos en XLSForm siguen la regla BODMAS para el orden de las operaciones matemáticas: Paréntesis, Potencias, División, Multiplicación, Adición y Sustracción. Esto significa que los cálculos dentro de paréntesis se realizan primero, seguidos de las potencias, luego las divisiones, multiplicaciones, y así sucesivamente. Usar los paréntesis correctamente garantiza que los cálculos funcionen como se espera.
Los cálculos avanzados en XLSForm suelen basarse en funciones y expresiones regulares para hacer los cálculos más eficientes.
Las funciones son operaciones predefinidas que se usan para realizar automáticamente tareas complejas, como redondear valores, calcular potencias o extraer la fecha actual.
Las expresiones regulares (regex) son patrones de búsqueda que se usan para encontrar caracteres específicos dentro de una cadena de texto.
Para una lista completa de las funciones disponibles en XLSForm, consulta Usar funciones en XLSForm. Para aprender más sobre las expresiones regulares, consulta Usar expresiones regulares en XLSForm.
Algunos ejemplos de cálculos más avanzados incluyen:
Cálculo |
Descripción |
|---|---|
|
Calcular la edad a partir de la fecha de nacimiento. |
|
Calcular los días transcurridos desde una fecha. |
|
Devolver solo el mes de una fecha. |
|
Crear una cadena de texto con el nombre completo del encuestado. |
|
Devolver la etiqueta de una opción, en el idioma actual, desde la lista de opciones. |
|
Convertir letras mayúsculas a minúsculas y espacios en guiones bajos. |
|
Conservar solo la primera letra o número de una cadena de texto. |
|
Generar un número aleatorio entre 0 y 10. |
|
Aislar la latitud de las coordenadas GPS. |
|
Aislar la longitud de las coordenadas GPS. |
|
Crear una variable binaria que toma el valor |
El campo calculation también se puede usar para configurar respuestas predeterminadas dinámicas. Las respuestas predeterminadas dinámicas permiten mostrar una respuesta predeterminada dentro de una pregunta basada en una respuesta anterior.
Para configurar una respuesta predeterminada dinámica:
En la columna calculation, ingresa la referencia a la pregunta que completará dinámicamente la respuesta predeterminada.
En la columna trigger, ingresa la pregunta que activará el cálculo.
Por lo general, esta sería la misma pregunta referenciada en la columna calculation, de modo que cualquier cambio en la pregunta de activación también actualice la respuesta predeterminada.
hoja survey
type |
name |
label |
calculation |
trigger |
|---|---|---|---|---|
text |
hh_name |
Name of the head of household |
||
text |
phone |
Household phone number |
||
text |
phone_name |
Name of the phone owner |
${hh_name} |
${hh_name} |
survey |
Nota: Si quieres evitar que los usuarios editen el campo, configura la columna read_only como TRUE.
' y se incluyen comas donde sea necesario.coalesce() o if(). Por ejemplo:
coalesce(${potentially_empty_value}, 0)if(${potentially_empty_value}="", 0, ${potentially_empty_value})default.
Infinity, lo que puede causar problemas en los informes de datos y al procesar los datos exportados. Para evitar esto, agrega lógica de omisión para que el cálculo no se ejecute cuando el divisor sea igual a cero, o aplica una restricción para evitar que la variable del divisor sea igual a cero.
random() o now(), ya que sus valores pueden cambiar bajo estas condiciones.
once() para garantizar que la expresión se evalúe solo una vez (por ejemplo, once(random()) o once(today())).
¿Encontraste lo que buscabas? ¿La información fue clara? ¿Faltaba algo?
¡Comparte tus comentarios para ayudarnos a mejorar este artículo!
KoboToolbox es mantenido por Kobo Inc.