contar solo las mayusculas de cada celda

Solo consultas sobre el nuevo Excel 2.007

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

contar solo las mayusculas de cada celda

Notapor paure » 19 Oct 2011 08:20

hola, tengo una lista de "palabras" aleatorias (solo letras o solo numeros o letras y numeros (con mayusculas y minusculas)) por ejemplo:

-23567hola012357
-hola
-HOla12
-HoLa1240741'248
-HOLA
-HhOoLlAa
-...

mi lista son casi 10000 palabras por columna
la pregunta sera como puedo contar numericamente las "palabras" que contienen mayusculas (no importa cuantas) es decir... en este caso serian: 4
gracias de antemano. :)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
paure
Miembro Frecuente
Miembro Frecuente
 
Registrado: 19 Oct 2011 08:07

Re: contar solo las mayusculas de cada celda

Notapor Cacho R » 19 Oct 2011 11:44

Hola! paure. En un módulo común puedes introducir la siguiente macro:

Código: Seleccionar todo
Sub CuentaMayúsculas()
  MsgBox BuscaMayusculas([a1:a6])
End Sub

Function BuscaMayusculas(Rng As Range) As Long
Dim objRegExp, C As Range

Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
  .Pattern = "[A-Z]"
  .IgnoreCase = False
  .Global = True
End With

For Each C In Rng
  BuscaMayusculas = BuscaMayusculas - objRegExp.Test(C)
Next
Set objRegExp = Nothing
End Function

Obtendrás un mensaje (por el MsgBox) que te brindará la cantidad de palabras que contienen -al menos- una letra mayúscula, del rango de celdas: A1:A6.

Saludos, Cacho R.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Cacho R
Miembro Frecuente
Miembro Frecuente
 
Registrado: 23 Jun 2011 17:15
Ubicación: Buenos Aires

Re: contar solo las mayusculas de cada celda

Notapor paure » 19 Oct 2011 12:47

no estoy familiarizado con esto de los macros.... alguien podria explicarme de que se trata?
gracias mil!
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
paure
Miembro Frecuente
Miembro Frecuente
 
Registrado: 19 Oct 2011 08:07

Re: contar solo las mayusculas de cada celda

Notapor paure » 19 Oct 2011 13:01

puede haber una manera sin usar macros??
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
paure
Miembro Frecuente
Miembro Frecuente
 
Registrado: 19 Oct 2011 08:07

Re: contar solo las mayusculas de cada celda

Notapor Adrian » 19 Oct 2011 14:12

Hola, muy pero muy bueno el código de Cacho (como es su costumbre), ojalá nos comente sobre el objeto VBScript.RegExp, y como la función obtiene la cantidad.

Bueno, pongo archivo sin macros, no lo estudié mucho, es lo primero que se me vino a la mente, voy a estudiar si hay otra forma.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: contar solo las mayusculas de cada celda

Notapor Cacho R » 19 Oct 2011 15:37

Hola! Adrián.
El siguiente enlace está bueno como para interiorizarse del tema: The RegExp object.

Saludos, Cacho R.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Cacho R
Miembro Frecuente
Miembro Frecuente
 
Registrado: 23 Jun 2011 17:15
Ubicación: Buenos Aires

Re: contar solo las mayusculas de cada celda

Notapor Adrian » 19 Oct 2011 17:54

Gracias Cacho, no sé inglés pero algo trataré de "extraer" algo. :D :D
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: contar solo las mayusculas de cada celda

Notapor Adrian » 19 Oct 2011 18:24

Estoy probando el código aportado por Cacho, y veo que lo que hace es (eso creo) es contar si tiene algo en mayúsculas, pero no cuenta las mayúsculas que hay en una celda, indica si hay una mayúsculas.
Cuando pone: .Pattern = "[A-Z]" interpreté que va evaluar si algo está de A a la Z, es decir si lo contiene.
Cuando Pone:
BuscaMayusculas = BuscaMayusculas - objRegExp.Test(C) 'Aca recorre el rango
BuscaMayusculas es el nombre de la función y como devuelve un entero "hace de número" (no se usa recuersividad).
.Test(C) es un métdo que basado en .Pattern devuelve True o False
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: contar solo las mayusculas de cada celda

Notapor paure » 19 Oct 2011 18:37

muchas gracias adrian!
lo que yo estava haciendo era contar letra por letra y al final juntarlo todo!! ni te imaginas el trabajo que me acabas de ahorar!!
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
paure
Miembro Frecuente
Miembro Frecuente
 
Registrado: 19 Oct 2011 08:07

Re: contar solo las mayusculas de cada celda

Notapor Cacho R » 19 Oct 2011 20:53

Efectivamente, Adrián: has deducido perfectamente el funcionamiento.

El objeto VBScript.RegExp da para tantas cosas que el enlace provisto "se queda corto"...

Por ejemplo si en lugar de querer saber si tiene o no tiene letras en mayúscula (lo preguntado por paure), queremos saber "cuantas letras mayúsculas tiene una celda", en lugar de:

BuscaMayusculas = BuscaMayusculas - objRegExp.Test(C)

puedes utilizar:

BuscaMayusculas = BuscaMayusculas + objRegExp.Execute(C).Count

Y la respuesta es la misma que has obtenido en tu ejemplo: 19, pero de un modo mucho más cómodo, se entiende.

Saludos, Cacho R.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Cacho R
Miembro Frecuente
Miembro Frecuente
 
Registrado: 23 Jun 2011 17:15
Ubicación: Buenos Aires


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Excel 2.007

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado