Función personalizada

3 envíos / 0 nuevos
Último envío
msorin
Imagen de msorin
Offline
última acción: Hace 7 años 2 meses
alta: 21/12/2012 - 20:33
Puntos: 80
Función personalizada

 

Buenos días amigos de Necesitomas.com

 

Tengo un interrogante.

 

¿Cómo podría elaborar una función personalizada VBA para reportar sólo cifras significativas, me explico:

 

Si el valor es mayor o igual que 10 reportar con máximo dos cifras significativas, ej: 61.23 entonces sería 61

 

Si el valor es menor que 1 encontrar las dos cifras significativas despues de la coma que no sean cero. Eje: 0.003567878 entonces seria 0.0036

 

Si el valor es mayor o igual que 1 pero inferior a 10 reportar con dos cifras significativas. Ej: 1.44589 entonces sería 1.4

 

 

Gracias por la ayuda que me puedan brindar

 

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 hora 41 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11005
coma flotante

por lo que comentas de utilizar las dos primeras cifras significativas, se parece a cómo se almacenan los números en coma flotante. cero coma y el número, por 10 elevado a lo que sea

prueba a aplicar un formato con exponencial, con la función Format

algo parecido a esto

Format(tu_numero,".000E+0")

por ejemplo si tu número es 123456.7897

esto devuelve .123e6

y si tu número es 0.000123

devolverá .123E-3

Así que ya tienes las dos cifras significativas al principio, bueno, después del punto

puedes emplear una función de texto para extraer esos caracteres, por ejemplo la función MID, para extraer los caracteres desde la posición 2

MID(Format(tu_numero,".000E+0"),2,2)

 

------
Ya sé Excel, pero necesito más.

visitante (no verificado)
Imagen de visitante
Re: coma flotante

 

Gracias por tu pronta respuesta Paco.

 

He probado lo que me indicas pero tengo una dificultad.

 

Cuando tengo un valor como 0.00369 encuentro las dos cifras significativas pero me las muestra así 37 y yo requiero que me las presente así: 0.0037.

 

Cuando tengo un valor como 1.456 me aparece así 2, y yo requiero que me aparezca así: 1.5

 

El tema es que no se como establecer los formatos específicos.

 

Paco esta es la función que arme con tus indicaciones

 


 

 

Function Decimal_Incertidumbre(Valor_Incert) As Double
Dim Val2 As Double
Dim Val1 As Double

If Valor_Incert < 1 Then
Val1 = Format(Valor_Incert, ".000E+0")
Val2 = Mid(Format(Val1, ".000E+0"), 2, 2)

ElseIf Valor_Incert > 10 Then

Val1 = Format(Valor_Incert, "0")
Val2 = Val1
Else

Val1 = Format(Valor_Incert, "0.0")
Val2 = Val1
End If

Decimal_Incertidumbre = Val2

End Function


 

 

..::::Gracias por tu ayuda.::::::::