Resultados porcentajes negativos o positivo según los casos

No entendiendo nada de SQL y estoy intentando plasmar una fórmula en el campo calculado.

El resultado buscado es -28,% en la relacion entre Valor 1=18 y Valor 2=25 siendo valor 1 [# clienti 2022 -5k] y valor 2 [# clienti 2021 -5k]

Usando esta formula me da -30%. Que hago mal?

=Format((([# clienti 2022 -5k]-[# clienti 2021 -5k])/[# clienti 2021 -5k]);"#,0")*100

He puesto *100 al final porque la casilla tiene formato estándar con 1 decimal.

Además, ¿esta fórmula ajusta automáticamente el valor a positivo o negativo según los casos?

En resumen, necesito una fórmula que me calcule la variación entre los dos campos y que me de un resultatio positivo o negativo automáticamente según los casos.

3 respuestas

Respuesta
2

La respuesta que le dan es suficiente, no obstante, le dejo esta función que presenté en otra respuesta. Pegue esta función en un módulo

Public Function var_porc(dbnum1 As Double, dbnum2 As Double, Optional nforma As Byte) As Variant
'Función para obtener la variación porcentual
'Parámetros:
' dbnum1 - Primer dato
' dbnum2 - Segundo dato
 '            nforma: 1 = Retorna el resultado como decimal
 '                    2 = Retorna el resultado como valor absoluto
 '                    3 = Retorna el resultado como cadena en %
 'Elaborada por:
 '              EDUARDO PÉREZ FERNÁNDEZ
 'Fecha:        02/02/2023
  If nforma = 0 Then
    nforma = 1
  End If
 Select Case nforma
    Case 1 ' Com decimal
      var_porc = Round((dbnum2 - dbnum1) / dbnum1, 4)
    Case 2 ' Como valor absoluto
      var_porc = Round(((dbnum2 - dbnum1) / dbnum1) * 100, 2)
    Case 3 ' Como porcentaje
      var_porc = Format((dbnum2 - dbnum1) / dbnum1, "0.00%")
 End Select
End Function

Ejemplo de llamada en la ventana de inmediato

¿
? Var_porc(25,18,1)
-0,28 
? Var_porc(25,18,2)
-28 
? Var_porc(25,18,3)
-28,00%
Respuesta
1

Permíteme un consejo, deja los campos de las tablas como simple recipiente de datos. Los cálculos que tengas que hacer, mejor en consultas e infinitamente mejor en VB. Por ejemplo, si tengo una tabla con Valor1, Valor2 y Valor3.

En un formulario escribo un valor en 1 y 2(puedes ver que el cursor aún está en el control Valor2)

Cuando pulso Enter

Si hubiera cambiado los valores,

En este caso la instrucción, que es exactamente igual a la que tu has escrito,

Private Sub Valor2_AfterUpdate()
Valor3 = ((Valor2 - Valor1) / Valor1) * 100
End Sub

la pongo en el evento después de actualizar del cuadro de texto Valor2

En el caso de una consulta

Al abrirla

El valor positivo o negativo ya lo pone el sistema.

Respuesta
1

Creo que se puede simplificar (parte del trabajo lo hace Access por aburrimiento).

Como origen del cuadro de texto: el calculo

= 100* (([# clienti 2022 -5k]-[# clienti 2021 -5k])/[# clienti 2021 -5k])

El formato se le asigna al cuadro de texto y el valor calculado será un numero (no un texto como ocurre al darle formato al calculo).

Nota: con esos nombres de objetos un ligero despiste y ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas