Hola a todos!
Ayer tratábamos la forma de extraer la parte entera de un número para realizar un sumatorio en un rango: SUMAR LA PARTE ENTERA DEL CONTENIDO DE UN RANGO CON NÚMEROS DECIMALES
Y tal como os comentaba, en la publicación de hoy me gustaría tratar la otra consulta que me habían enviado y que se refiere a la posibilidad de extraer la parte decimal de un número y proceder a su sumatorio, teniendo en cuenta también si es o no negativo.
Bien, para realizar esto os propongo crear una UDF (función definida por el usuario) que solucionará nuestro problema, veamos el ejemplo:
En la columna DATOS tenemos el número completo y en columna B la parte decimal (respetando si el número es negativo o positivo). En la última fila indicamos el sumatorio.
Esta tarea la podemos realizar con VBA creando una función específica. El código que vamos a usar es el siguiente:
Public Function SUMADECIMAL(ByVal miRango As Range) As Variant
'Definimos variables
Dim celda As Range, sCadena As Double
Dim matriz As Variant, nDec As Double
'Recorremos todas las celdas seleccionadas
For Each celda In miRango
'Si la celda contiene un decimal entonces
If celda <> Fix(celda) Then
'seleccionamos la parte decimal
matriz = Split(celda, ",")
'si el numero es menor que cero, entonces es negativo
If celda < 0 Then nDec = matriz(1) * -1
Else
'Si es mayor que cero entonces es positivo
If celda > 0 Then
nDec = matriz(1)
End If
End If
End If
'Sumamos cada decimal extraído
sCadena = sCadena + (nDec * 1)
nDec = 0
Next
'Mostramos el resultado en la función
SUMADECIMAL = Int(sCadena)
End Function
Básicamente, lo que hacemos es extraer de cada celda que no tenga un número entero su parte decimal. Controlando si es o no negativo ese número:
El resultado es el siguiente:
Exactamente el mismo que mostraba más arriba.
Y esto es todo por hoy : )
Descarga el archivo de ejemplo pulsando en: SUMAR LA PARTE DECIMAL DEL CONTENIDO DE UN RANGO NUMÉRICO
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies