Excel puede sumar celdas con caracteres no numéricos
Imagina que tienes que sumar el contenido numérico de una celda o de un rango que tenga o no caracteres alfabéticos.
Por ejemplo, si una celda tiene la siguiente información «había0armónicasmas5pitosy8flautas» el resultado será: 13 (0 + 5 + 8).
Es decir, se suma cada número natural. La nueva fórmula es eficiente y rápida. La nueva función se denomina «SumarV» y su único argumento es el rango que selecciones.
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.
Descarga el archivo de ejemplo pulsando en: SUMAR EL CONTENIDO DE UNA CELDA O DE UN RANGO CON O SIN CARACTERES ALFANUMÉRICOS
Fuente:
Deja una respuesta