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
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.
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.::::::::