SUMAR EL CONTENIDO DE UNA CELDA O DE UN RANGO CON O SIN CARACTERES ALFANUMÉRICOS

Hola a todos!

Hoy vamos a trabajar con una UDF que he programado para obtener la suma de todos los caracteres (obviamente numéricos) de una celda o varias celdas en un rango.

El post tiene dos objetivos, por una parte mostrar la UDF y por otra programar la función Split para utilizarla cuando no existe un delimitador. Si no estáis familiarizados con la función Split, os dejo este enlace.

Pues bien, imaginad que tenemos varias celdas con datos numéricos y alfanuméricos y queremos obtener la suma de los números:

SUMAR EL CONTENIDO DE UNA CELDA O DE UN RANGO

Pues para poder hacer esto, os propongo la siguiente función:

Option Explicit
Function SUMARV(ByVal Target As Range)
Dim celda As Variant, sCadena As String
Dim dato As Variant, numero As Long
'Por cada celda en el rango
For Each celda In Target
'si la celda tiene contenido
If celda <> Empty Then
'obtenemos la cadena y la convertimos a unicode, añadiendo Chr(0) entre cada letra
sCadena = Left(StrConv(celda, vbUnicode), Len(StrConv(celda, vbUnicode)) - 1)
'con la función Split delimitamos la cadena.
For Each dato In Split(sCadena, Chr(0))
'Sumamos cada número
If IsNumeric(dato) Then numero = numero + CInt(dato)
Next dato
End If
Next celda
' Pasamos el resultado a la función
SUMARV = numero
End Function

Como podéis ver, utilizamos la función StrConv(celda, vbUnicode) para pasar lo datos a Unicode, esto generará delante y detrás de cada carácter un Chr(0). Esto nos va a permitir utilizar la función Split y separar cada letra o número y evaluar si lo podemos sumar.

Lo podríamos hacer perfectamente con un for y la función Mid(), pero así resulta mucho más rápido y eficiente.

Este es el resultado de la suma: 1357

SUMAR EL CONTENIDO DE UNA CELDA O DE UN RANGO_1

Y eso es todo, es una función muy interesante y con la que he disfrutando creándola.

Descarga el archivo de ejemplo pulsando en: SUMAR EL CONTENIDO DE UNA CELDA O DE UN RANGO CON O SIN CARACTERES ALFANUMÉRICOS

¿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