CONTAR CARACTERES ESPECÍFICOS EN UN RANGO SELECCIONADO

Hola a todos!.

La semana pasada, por diversos motivos, no me fue posible publicar el post habitual. Pero este sábado lo he podido escribir : )

Como sabéis hay varias fórmulas que nos sirven para contar caracteres determinados o específicos en una celda o un rango. Normalmente se suele trabajar con matriciales o combinación de fórmulas, sin embargo, y dado que con VBA podemos crear nuestras propias funciones, os voy a proponer crear nuestra propia fórmula para contar caracteres.

Vamos a imaginar que tenemos un texto, por ejemplo este:

El azafran silvestre o colchicum autumnale
NO ES EL AZAFRAN COMUN
ES UNA planta muy venenosa
que conviene saber identificar

CONTAR CARACTERES ESPECIFICOS EN UN RANGO SELECCIONADO

Y queremos contar el número de letras “m” que existen en todo el rango que en el que he escrito el texto.

Para ello vamos a usar una función que acabo de crear y que he nombrado como CONTARV:

Option Explicit
Public Function CONTARV(ByVal target As Range, ByVal Caracter As Variant)
'Definimos variables
Dim Celda As Range, nCar As Long, i As Long
Dim nCont As String
'Iniciamos primer loop por cada celda en el rango
For Each Celda In target
'Por cada celda recorremos todos los caracteres
For i = Len(Celda) To 1 Step -1
nCont = Mid(Celda, i, 1)
'Si alguno de los caracteres es igual al seleccionado
'lo contamos
If UCase(nCont) = UCase(Caracter) Then
nCar = nCar + 1
End If
Next i
Next Celda
'Pasamos el resultado al valor de la función
CONTARV = nCar
End Function

Según el ejemplo, aquí vemos el resultado:

CONTAR CARACTERES ESPECIFICOS EN UN RANGO SELECCIONADO_1

Como podéis comprobar, la macro nos ha contado el número de letras m en el texto, sean mayúsculas o minúsculas. Esto lo logramos igualando valores con la función UCase()

If UCase(nCont) = UCase(Caracter) Then

Si queréis que el resultado sea sensible a mayúsculas o minúsculas solo tenéis que borrar la función UCase(U).

El código funciona igual para contenido numérico, sin embargo, con el tema de las tildes, se debe especificar si la lleva o no.

Por otra parte, el segundo argumento de la función, en el que indicamos el caracter a contar, se puede especificar en una celda (como lo tenéis en el ejemplo) o en la función (entre comillas, sea número o texto):

=CONTARV(A3:A7;”m”)

Y eso es todo, como habéis visto, nos hemos creado nuestra propia UDF o función definida por el usuario, para solucionar una posible necesidad.

Espero que os haya resultado interesante  🙂

Descarga el archivo de ejemplo pulsando en: CONTAR CARACTERES ESPECÍFICOS EN UN RANGO SELECCIONADO

¿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

3 pensamientos en “CONTAR CARACTERES ESPECÍFICOS EN UN RANGO SELECCIONADO

  1. Necesito ayuda para crear una función. Quiero que excel idenrifique un numero x, de una lista de 0 a 9, en cada linea de a1 a a9, y lo coloque de primero en b1. Trasladando los demás a de b2 a b9, y así sucesivamente, ad infinitum.

    Me gusta

  2. Pingback: FUNCIÓN PARA CONTAR LAS VECES QUE SE REPITE UN CARACTER O TEXTO EN UNA CELDA | EXCEL SIGNUM

¿Te ha gustado?, Realiza un comentario.

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .