2 agosto, 2026

OBTENER LA TENDENCIA EN POWER APPS CALCULANDO LA PENDIENTE

Hola a todos,

He estado estos días implementando un nuevo input en el borrador de un proyecto de Apps que estoy creando. Se trata de cómo obtener un ítem que represente numéricamente una tendencia. Es decir, por ejemplo, la tendencia entre las notas medias de los 5 cursos de una carrera. Es decir, imaginad que un alumno ha tenido estas notas medias en cada año de la carrera:

Pues bien, para conseguir un indicador de esa tendencia es hallar la pendiente, lo que nos permitirá obtener un número que represente la tendencia. En caso de ser descendente, será negativa y ascendente positiva.

En Excel se hacer así:

Para hacerla de forma correcta, debemos incluir una columna con un índice que indique el primer y último elemento. En este caso la tendencia es decreciente y por lo tanto negativa.

Pero si queremos hacer esto en Power Apps, yo os propongo una forma y luego está en vuestro criterio darle utilidad o no. Para ilustrar el ejercicio he creado una aplicación:

Se trata de una aplicación de graba automáticamente al alumno, el año y la nota media del curso. En la galería tenéis las notas de dos alumnos, uno con notas que van de menos a más y otro con ejemplo inverso. Para este ejemplo no he usado SharePoint, he decidido utilizar Dataverse. Este sería el código del botón grabar:

Os dejo el código para que sea más fácil:

If(
    IsBlank(ddNombres.SelectedText.Value) || 
    IsBlank(ddAño.SelectedText.Value) || 
    IsBlank(txtNota.Text) || 
    !IsNumeric(txtNota.Text) || 
    !IsEmpty(Filter(Evaluaciones; Nombre = ddNombres.SelectedText.Value && Año = ddAño.SelectedText.Value));

    Notify("Faltan datos o el alumno ya tiene una nota en este año. Verifica antes de grabar."; NotificationType.Error);
Set(UltimoID; Max(Evaluaciones; NotaID) + 1);;

Patch(Evaluaciones; Defaults(Evaluaciones);
    {
        Titulo: "Evaluación " & UltimoID;
        NotaID: UltimoID*1;
        Nombre: ddNombres.SelectedText.Value;
        ValorNota: Value(txtNota.Text);
        Año: ddAño.SelectedText.Value;
        FechaRegistro: Now()
    }
);;
Reset(ddNombres);;
Reset(txtNota);;
Reset(ddAño);;
);;

Esto lo graba en una tabla de Dataverse:

Y el siguiente paso es obtener la pendiente del que necesitemos. Para hacerlo he creado otro botón que hace el cálculo y obtiene el dato en una variable:

También os dejo el código:

Set(Pendiente; Blank());;
Set(NotasAlumno; 
    Sort(
        Filter(Evaluaciones; Nombre = ddNombresPendiente.Selected.Value); 
        NotaID; 
        SortOrder.Ascending
    )
);;

Set(NotasAlumno; Filter(Evaluaciones; Nombre = ddNombresPendiente.SelectedText.Value));;
Set(n; CountRows(NotasAlumno));;

// Sumamos valores para la fórmula de la pendiente
Set(SumX; Sum(NotasAlumno; NotaID));;
Set(SumY; Sum(NotasAlumno; ValorNota));;
Set(SumXY; Sum(NotasAlumno; NotaID * ValorNota));;
Set(SumXX; Sum(NotasAlumno; NotaID * NotaID));;

// Calculamos la pendiente solo con las notas del alumno
Set(
    Pendiente; 
    If(n > 1; (n * SumXY - SumX * SumY) / (n * SumXX - SumX * SumX); 0)
);;

Cuando seleccionamos a un alumno y pulsamos en el botón, se muestra la pendiente. En el caso de Alicia Miguéns, es ascendente y por lo tanto positiva:

Y ahora, una vez que contamos con este elemento, ya lo podemos utilizar en nuestros cálculos como un dato más que podremos usar para bonificar, penalizar o ajustar puntuaciones en función de la tendencia de las notas

Y esto es todo, espero que sea de utilidad!!

Comparte este post

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies