SUMAR LA PARTE DECIMAL DEL CONTENIDO DE UN RANGO NUMÉRICO

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:

SUMAR LA PARTE DECIMAL DEL CONTENIDO DE UN RANGO NUMÉRICO

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:

SUMAR LA PARTE DECIMAL DEL CONTENIDO DE UN RANGO NUMÉRICO1

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.

Donate Button with Credit Cards

¡¡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

Anuncios

SELECCIONAR NÚMEROS Y CONVERTIRLOS A ENTERO CON VBA

Hola a todos!!

Hoy publicaré un post en el que vamos a crear un código que nos permita pasar números con decimales (positivos o negativos) a un número entero, es decir, el número sin sin decimales ni redondeos. El motivo es que hace unos días un lector me pidió eso exactamente.

Para realizar este ejercicio utilizaremos este ejemplo:

SELECCIONAR NUMEROS Y CONVERTIRLOS A ENTERO CON VBA

Como podéis ver, tenemos una mezcla de números (positivos, negativos, con decimales o enteros). Y ahora debemos realizar lo que nuestro compañero lector nos ha pedido, solo enteros y respetando el signo del número.

Para hacerlo utilizaremos este código:

Sub CONVERTIR_SELECCION_A_ENTERO()
Dim i As Range, Area As Object
With Sheets("Hoja1")
'Incluimos un control error en caso de ejecutar la macro sin seleccionar datos
On Error GoTo Control
'Área será el rango que vayamos a seleccionar
Set Area = Application.Intersect(Selection, .UsedRange)
'Iniciamos un bucle que recorra cada uno de las celdas en el "área" seleccionada
For Each i In Area
'Si el número no es entero entonces los pasamos a entero
If i CInt(i) Then i = CInt(Fix(i))
'Ocultamos los ceros que quedan "vacíos" después de pasar a entero
Selection.NumberFormat = "0"
Next i
Control: If Err.Number = "424" Then
MsgBox ("EL RANGO SELECCIONADO NO CONTIENE DATOS"), vbExclamation, "SIN DATOS SELECCIONADOS"
End If
End With
End Sub

Una vez aplicada la macro este es el resultado:

SELECCIONAR NUMEROS Y CONVERTIRLOS A ENTERO CON VBA1

Efectivamente, hemos pasado todos los números a entero, y hemos utilizado la función Fix para que respete el signo de los números negativos y que además elimine todos los números después de la coma, dejando el número principal sin redondeos.

Y eso es todo, os dejo el archivo para que realicéis pruebas 🙂

Descarga el archivo de ejemplo pulsando en: SELECCIONAR NÚMEROS Y CONVERTIRLOS A ENTERO CON VBA

 
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!