Hojas de cálculo en Excel - página principal

Contar el número de caracteres

Hoy os presento una función que nos puede servir para contar el número de caracteres que tiene una cadena de texto, sin contar los espacios en blanco (si queremos contar también los espacios en blanco, tan solo tendremos que cambiar ligeramente el código que os propongo, tal y como aparece en la segunda función). Para ello, construiremos una función que nos ahorrará tiempo y trabajo. Comenzaremos entrando en modo VBA, ...ya sabéis, Alt + F11, y creando un módulo donde introduciremos el siguiente código:


Function contarsinespacios(celda As range)
'Reemplazamos los espacios vacíos por nada,
'es decir, los eliminamos, pero solo a efectos
'del cálculo del nº de caracteres.
mi_texto = Replace(celda, " ", "")
'Contamos los caracteres que hay, ahora que tenemos el
'texto en la variable mi_texto, el texto sin espacios vacíos

cantidad_de_texto = Len(mi_texto)
'ponemos el número de caracteres en la celda
'donde tenemos esta función (la fómula)
contarsinespacios = cantidad_de_texto
End Function

Ahora solo tendremos que llamar a la función, de la misma forma que llamamos por ejemplo a la función SUMA:

=contarsinespacios(celda)

celda: corresponde a la celda, cuyos caracteres queremos contar (A1, A5, B35, AB167, o la que sea).

He aquí un ejemplo gráfico que lo aclarará todo:


Si deseamos que la función nos cuente también el número de espacios en blanco, tan solo tendremos que adaptar la función anterior, a esta nueva forma (ojo, que también le hemos cambiado el nombre a la función):

Function contarconespacios(celda As range)
'Contamos los caracteres que hay
cantidad_de_texto = Len(celda)
'ponemos el número de caracteres en la celda
'donde tenemos esta función (la fómula)

contarconespacios = cantidad_de_texto
End Function


Para llamar a la función, lo haremos igual que en el ejemplo anterior:


=contarconespacios(celda)

celda: corresponde a la celda, cuyos caracteres queremos contar (A1, A5, B35, AB167, o la que sea).

A la vista de algunos comentarios, voy a añadir un par de funciones propias de Excel que hacen exactamente lo mismo, pero sin necesidad de utilizar macros. Si queremos contar el número de caracteres, incluyendo los espacios en blanco que haya, con esta fórmula lo tenemos chupado:


=largo(celda)


Y si lo que queremos es contar los caracteres, pero sin incluir los espacios en blanco, la fórmula que tendremos que utilizar es esta otra:


=largo(sustituir(celda;" ";""))


celda: corresponde a la celda, cuyos caracteres queremos contar (A1, A5, B35, AB167, o la que sea).



39 comentarios:

Armando dijo...

Gracias! me ahorraste horas de trabajo, necesito importar una base de datos de excel a access de 45000 lineas, y necesito controlar el ancho de los registros. Gracias por compartr.

Javier Marco dijo...

De nada.

Gracias por tu comentario.

Anónimo dijo...

Agradezco muchísimo el que hayas compartido esta información. ¡Me ha ayudado muchísimo!.
Rocío Herrera
México

Javier Marco dijo...

Muchas gracias por tu comentario, Rocío.

Paco Rodríguez dijo...

Y SI LO HACEMOS CON LA FUNCIÓN =LARGO()?

Javier Marco dijo...

Pues mucho más fácil y sencillo. En el fondo no deja de ser lo mismo que que "len" del macro.

Hay días en los que uno se levanta pensando en macros, en macros, y solo en macros, y ese día fue uno de ellos :-)

Anónimo dijo...

La diferencia está en contar o no los espacios en blanco. La función LARGO te los cuenta, y esta macro no, por lo que la veo más útil. Muchas gracias.

Javier Marco dijo...

¡Buena observación!.

Muchas gracias por tu comentario.

Anónimo dijo...

Excelente amigo... gracias!!!!

Javier Marco dijo...

De nada. Muchas gracias por tu comentario.

GCC dijo...

Gracias, por el código necesito controlar unos textos en excel que no tengan más de 130 caracteres.

Javier Marco dijo...

Me alegro que te haya servido :-)

Anónimo dijo...

Cueck... una pena que en el Office 2007 no funcione... pero bueno... son meros detalles >.<

Javier Marco dijo...

Pues es extrañísimo que no te funcione en Office 2007 (no tengo esa versión así que no puedo probarlo). Son 3 líneas de código sencillísimas, que deberían funcionar hasta en Excel 95, porque no tienen ningún secreto.

Anónimo dijo...

Lo se, lo más probable es que sea un error 800... entre el teclado y el asiento...

Pero bueno, al "ejecutar" la funcion (=contarconespacios(A1)), me tira un lindo error...

Anónimo dijo...

Muy bueno me a servido de mucho, te felicito...

Seria excelente algo acerca de la manipulacion de caracteres :-)

Javier Marco dijo...

Muchas gracias por tu comentario. Si fueses más explícito respecto al tema que planteas, estudiaría si va a servir para más usuarios.

kathe dijo...

Me gusto mucho, de hecho me sirvio bastante !!, pero , no se si me estare depronto aprovechando pero me gustaria saber como se pueden comparar caracteres, por ejemplo , una cadena de caracteres de una celda y otra cadena de caracteres de otra celda y que me diga cuantos de los caracteres son iguales pero en orden por ejemplo: si la primer cadena de caracteres el primer caracter es una "a" y en la segunda celda el primer caracter tambien es "a" me lo cuente como repetido, bueno , no se si me hago entender , pero es que soy nueva con esto de la programacion de macros de excel y agradeceria muchisisisisisimo cualquier ayudita.....
Un abrazo

Anónimo dijo...

Estimados todos...una consulta al foro...alguien sabra como hacer una busque en excel con macoros???
esto es...si un NIF ( o cualquier campo) tiene un mismo numero de factura y un valor de abono igual al cel cargo...
Gracias por vuestra atencion

Anónimo dijo...

Que ganas de complicarse la vida no si ya existe una funcion que lo hace...

Pedro Silvestre dijo...

JAVIER, quisiera hacerte una consulta.

Habrá alguna función o macro que me permita contar y cortar el espacio que ocupa un texto? Hago referencia a que cuando tienes 2 textos de 15 letras cada uno (por ejemplo) las mismas ocupan diferente espacio (de acuerdo a las letras que integran dicho texto)en un celda y es allí que me interesa conocerla.

Saludos

Roy Cordero dijo...
Este comentario ha sido eliminado por el autor.
Roy Cordero dijo...

hola amigo tu pagina es muy buena, y tengo un problema, ojala puedas ayudarme ya que no se nada de excel y necesito hacer un formato de racionalizacion de gastos en donde funciona asi:

ITEM / COSTO $ / FRECUEN. (Diario, Semanal, Mensual) / GASTO MENSUAL (costo * D(365dia),S(52sem) o M(12mes) / ELIMINAR GASTO (solo marcar con x si o no)(sí se elimina [resta o elimina el gasto y no modifica el total] o sí no [no hace nada]) / REDUCIR GASTOS (solo marcar con x sí si o no) / MONTO A AHORRA ( total del gast mensual menos eliminacion del gasto) o menos la cantidad a reducir gastos / AHORRO MESUAL (la cantidad total de as opoeraciones).

1 he aprendido a hacer las multiplicaciones y sumas, pero en frecuencia no se como hacer que reconosca las letras D,S,M por numeros para su multilicacion por los costos (365,52,12)
2 no se como hacer las opciones de eliminar o reducir gastos para que modifiquen los ahorros, teniendo en cuenta que eliminar gastos "elimina los gastos" y deja el total de gasto mensual como ahorro mensual; mientras q reduccion se coloca la cantidad a "bajar los gastos" de manera que se reduce dependiendo de la frecuencia de gasto, ejem. si gastaba 700 sem, ahora se ahorrara 70 sem, dando ahorro de 280 mensual, y al final el total de ahorro mensual.

lo que no se es esas 3 cosas, la frecuencia, la eliminacion y reduccion, y la union de todo eso dentro del formato, los totales y multiplicaicones y lo demas yo lo se hacer...
ojala puedan decirme donde buscar o ayudarme a hacerlo, gracias

joanfrape dijo...

¿Como puedo aumentar el nº de caracteres en una celda, pues no me deja pasar de 256?

Anónimo dijo...

Excelente, funciona 100% Ok

bostasupa dijo...

cuantas cedas tiene excel 95?

Javier Marco dijo...

Pues si no recuerdo mal, Excel 95 tiene 16.384 filas y 256 columnas, así que el total de celdas será el resultado de multiplicar ambas cifras.

christian_bor dijo...

esta genial, uchas gracias es de gran ayuda..

Serante dijo...

hola Javier me llegaron unos videos del curso de excel gracias, tengo una pregunta no quiero tomar todo el curso en si me interesa los ultimos 3 puntos o solo el de las macros que es lo que tengo dudas todavia si le entiendo pero no lo suficiente podria tomar solo ese video?

Serante dijo...

hola tengo una consulta espero me puedas ayudar tengo un archivo txt y necesito extraer datos pero no tiene un patron como el que muestras en el ejemplo que publicaste porque me da el encabezado y luego la relacion de los trabajadores y tengo otra hoja para dispercion de nominas lo que quiero es unir las dos para evitar capturar cada quincena el importe a pagar de los trabajadores pero la hoja de dispersion de nomina estan protegidas las macros que tiene hay alguna forma de desprotegerlas? para insertar otra macro y haga lo que necesito o lo que estoy tratando de hacer es que en otro archivo de excel importe los datos del txt y pase los datos al archivo de dispersion de nomina pero el archivo de txt no le encuentro como importar solo los datos que necesito le puse que si la fila contiene punto (.) tome los datos que necesito que es el rfc y el importe a pagar pero el archivo tiene un total por cada grupo de trabajadores y ahi tiene (punto) y se recorren las filas porque la macro busca la primer fila vacia para insertar el importe a pagar como le puedo hacer para que tenga dos condiciones que la fila tenga punto pero no total o hay alguna forma mas facil de hacerlo.
saludos

Javier Marco dijo...

Hola Serante. No sé que videos has recibido, pero yo no comercializo ningún tipo de producto relacionado con Excel.

En este blog todo es gratis, free, by the face, por la patilla, etc.

No tengo nada que ver con esos videos, pero si alguien te los ha enviado o te los ha ofrecido, diciendo que tiene que ver con este blog, te agradecería que me pasases la información que tengas.

Un saludo.

DAVID dijo...

Porque no funcionará en Excel 207 - 2010? Sale error NOMBRE?

Javier Marco dijo...

Hola David. Acabo de probarlo en Excel 2010 (en este momento no tngo la versión 2007 en el trabajo), y todas las funciones trabajan correctamente, sin dar ningún error.

Saludos.

Anónimo dijo...

saludos.
como ordenar una cadena de numeros

Agustín Repetto dijo...

Gracias por el aporte me sirvio para generar esta funcion anidada

=DERECHA(A2;LARGO(A2)-1)

Esa funcion busca en una celda la cantidad de caracteres que hay y resta el primer caracter de la izquierda.

Ejemplo
en A1 tengo el numero 348578847
y en A2 pongo la formula entonces devuelve 48578847, esto sirvio para sacar en una gran cantidad de numeros telefonicos el numero de salida de una central telefonica para volver a ingresarlo en la central.

Saludos

Anónimo dijo...

HOLA, A VER QUIEN ME PUEDE AYUDAR!!

TENGO UNA CELDA CON 12 POSICIONES Y DEBO PASARLA A UN ARCHIVO DE TEXTO DEL FORMATO:
NUMERO 2 POSICIONES
ESPACIO 1 POSICION
NUMERO 6 POSICIONES
ESPACIO 1 POSICION
NUMERO 2 POSICIONES
ME LO EXTRAE CON "CONCATENAR" PERO NO ME GENERA LOS ESPACIOS.

PODRÁ ALGUN ALMA INTELIGENTE ALIVIANAR A MI ALMA SUFRIENTE?
GRACIASSSSSS....... JUAN CARLOS

Anónimo dijo...

COMO SEPARO EN EXCEL UNA CELDA CON 10 NUMEROS, ABRIÉNDOLA EN TRES CELDAS CON 2 NROS.; 6 NROS. Y 2 NROS?
GRACIAS POR AYUDARME.

DANIEL

Javier Marco dijo...

Suponiendo que tengas en A1 la cifra, prueba esto en tres celdas distintas:

=IZQUIERDA(A1;2)
=EXTRAE(A1;3;6)
=EXTRAE(A1;9;2)

Quizás tengas que cambiar el punto y coma, por una coma, dependiendo de cual sea tu separador.

Saludos.

Victoria dijo...

Gracias por compartir.