Datos personales

miércoles, 1 de agosto de 2012

TRUCO Nº 26 - EXCEL 2007 - QUITAR LETRAS, ESPACIOS Y SIGNOS DE UNA CELDA Y DEJAR SOLO EL NUMERO.

Hola a tod@s.

            Un visitante del blog, me ha escrito en un comentario que tiene una lista en Excel de números que contienen una letra, pero a él solo le interesa el número, y me comenta si existe mediante una formula, quitar esta letra automáticamente y dejar únicamente el número, en caso contrario debe de celda por celda eliminar manualmente la letra con el consiguiente coste en tiempo que esto supone. Voy a aprovechar este comentario no solo para explicárselo a él sino a todos vosotros por si en alguna ocasión esto os puede servir de ayuda.

Mediante este Truco os voy a explicar como quitar letras, espacios, símbolos de una celda y dejar exclusivamente el numero.

NOTA. Este truco requiere de programación en Visual Basic, no os preocupéis seguir con atención cada uno de los pasos, por que el código del programa os lo voy a dar ya escrito, vosotros solo tenéis que copiar y pegar.

Comenzamos, la explicación del truco con una hoja de Excel en la que nos encontramos con diez celdas (quien dice 10 dice 3000 celdas) que contienen datos combinados de letras, números, caracteres, espacios, etc.



1º Si no tenemos activado el cuadro de edición de Visual Basic, vamos activarlo, (Saber si lo tenemos activado o no lo observamos si en la barra de menús tenemos el menú "Programador), para ello:

a) Le damos a la flecha que aparece en la barra de herramientas de acceso rápido de Excel, y le damos a la opción Mas Comandos.



b) Le damos a la opción "Mas Frecuentes", y activamos la casilla de verificación de la opción "Mostrar Ficha programador en la cinta de opciones" y le damos a "Aceptar".




Ahora vemos que nuestra hoja de calculo dentro de la barra de menús nos aparece el menú "Programador"



2º Ahora que tenemos el menú Programador, pinchamos sobre él, y  de los botones que nos aparecen,  pinchamos sobre Visual Basic.


3º Nos aparece una nueva ventana para realizar la programación en Visual Basic, para acceder a la ventana de programación, pinchamos sobre el botón "Agregar Modulo", y elegimos la opción "Modulo".


4º En el espacio en blanco que nos aparece copiamos y pegamos el código que os escribo a continuación:

Function SOLO_NUMEROS(In_Str)
Application.Volatile
Dim Temp_Str As String, Letra As String
Temp_Str = ""
On Error Resume Next
For c = 0 To Len(In_Str)
Letra = Mid(In_Str, c, 1)
If InStr("0123456789", Letra) > 0 Then
Temp_Str = Temp_Str & Letra
End If
Next
SOLO_NUMEROS = Temp_Str
End Function

Este es un código programado en Visual Basic para eliminar letras, símbolos y espacios de una celda y dejar solo los números. 

Una vez pegado este código en  nuestra ventana de Visual Basic nos aparecerá así:

A continuación vamos a Guardar nuestro programa, para ello le damos al botón Guardar.

En la siguiente ventana que nos aparece en la opción Guardar como tipo elegimos la opción "Libro de Excel Habilitado para Macros", le ponemos un nombre y le damos a Guardar.



Por último sobre la ventana de Visual Basic la cerramos pulsando sobre la X roja de la ventana superior derecha.

5º Una vez que tenemos el programa diseñado y guardado en nuestro hoja de calculo, vamos a proceder a convertir las celdas con letras, símbolos y espacios en celdas con solo los números. Para ellos nos situamos en la celda donde queremos que nos aparezca el resultado.

6º En la barra de formulas ponemos el signo igual = y a continuación escribimos la siguiente formula: VALOR(Solo_Numeros(A1))

Tener en cuenta que donde pone A1, es donde esta la celda que queremos convertir, si estuviera en otra celda, sustituimos A1 por la celda en cuestión, en nuestro ejemplo esta en la celda A1.


7º Una vez escrita la formula pulsamos INTRO, aparecerá en la celda donde hemos escrito la formula solo los números eliminando así espacios, signos y letras.

8º A continuación pinchamos sobre esta celda, y pinchamos sobre el cuadradito que nos aparece en la esquina inferior derecha. Y sin solar el botón del ratón arrastramos hasta el final de las celdas, convirtiendo cada una de ellas en números exclusivamente.


Espero que este truco especialmente dedicado a la persona que me envió el comentario solicitándome, si podía resolverle el problema, os sirva a todos en vuestro trabajo. 

Chao!

18 comentarios:

  1. Hola! muy buenos tus consejos, yo queria preguntarte, para validacion de datos:
    Como hago para que en una celda solo me permita ingresar texto
    Como hago para que una celda me permita ingresar numeros y texto.
    Lo pregunto porque hasta ahora no he podido lograrlo.
    Muchas gracias
    Pamela

    ResponderEliminar
  2. I intended to draft you a bit of word in order to thank you again for those nice solutions you've featured in this article. This is quite pretty open-handed with people like you to offer unhampered all a few individuals could possibly have distributed for an e book to help make some dough for themselves, mostly considering that you could have tried it in case you decided. These solutions in addition served as the great way to know that most people have the same dreams just as my personal own to know the truth very much more around this issue. I know there are many more fun situations in the future for individuals who read your blog post.
    My site :: sea ray boats for sale used

    ResponderEliminar
  3. Buen ejercicio, pero si tengo valores decimales, elimina el punto =S

    ResponderEliminar
  4. Me ocurría lo mismo, Eduardo. Si no tienes más de un punto (o coma) decimal por celda, puedes añadir un "." (o ",") a los números de esta línea: If InStr("0123456789", Letra) > 0 Then

    De modo que te quede esto : If InStr("0123456789.", Letra) > 0 Then

    Me solución la misma cuestión

    ResponderEliminar
    Respuestas
    1. Me reporta un error #error Como puedo arreglarlo

      Function SOLO_NUMEROS(In_Str)
      Application.Volatile
      Dim Temp_Str As String, Letra As String
      Temp_Str = ""
      On Error Resume Next
      For c = 0 To Len(In_Str)
      Letra = Mid(In_Str, c, 1)
      If InStr("0123456789.", Letra) > 0 Then
      Temp_Str = Temp_Str & Letra
      End If
      Next
      SOLO_NUMEROS = Temp_Str
      End Function

      Eliminar
  5. Buenos días, señores y si quiero dejar solo las letras como debo hacer??

    ResponderEliminar
  6. me has ahorrado una cantidad de trabajo enorme :) es muuuuy efectivo, gracias :)

    ResponderEliminar
  7. Genial resolviste mi problema thanks !!!!

    ResponderEliminar
  8. muchas gracias por el aporte, pero necesito ayuda ya que debo vincular de una celdas la que contiene fecha con horas a otra pero que solo traspase la fecha sin horas, espacios ni guiones. Lo intente con la opción formato de celda pero al pegar este como valor me entrega visualmente la fecha pero si coloco el puntero en la celda se ve con horas





    ResponderEliminar
  9. Necesito copiar la informacion para pegarla en otra hoja y al momento de pegarla me quedan todos los bloques como #VALOR... help

    ResponderEliminar
  10. Gracias me ahorrastes mucho trabajo.

    ResponderEliminar
  11. Mil gracias por compartir esta herramienta, es realmente util, saludos!!

    ResponderEliminar
  12. excelente... de verdad que me fue de mucha utilidad

    ResponderEliminar
  13. excelenteeee, graciassssssss, y ahora como haria para colocarle a esos numeros una coma en el segundo decimal?

    ResponderEliminar
  14. INCREIBLE pero que bueno estooooooo
    ME HA VENIDO DE LUJO

    ResponderEliminar
  15. En una tabla donde aparecen varios valores sólo algunos salen con signo "<" necesito una manera de que en todas las celdas donde aparezcan los signos "<" los quite y luego el número lo divida en 3

    ResponderEliminar

Deja aquí tu opinión, sugerencia o duda.