Funciones SoloLetras y SoloNumeros

Aporta tus macros y códigos Excel de interés para la comunidad.

Reglas del Foro
Este foro no es para hacer preguntas!
Este foro solo es para que aportes algo de interés para la comunidad.
(para preguntas vuelve al índice y busca los foros de "Tus Preguntas a la Comunidad")
Compartir en:
     

Funciones SoloLetras y SoloNumeros

Notapor TodoExcel » 17 Dic 2011 09:33

Con estas 2 funciones podrás separar solo letras o solo números de una cadena de texto.

http://www.todoexcel.com/funciones-solo ... lonumeros/

Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
TodoExcel
Manager Exceluciones
Manager Exceluciones
 
Registrado: 05 Jun 2004 16:05

Re: Funciones SoloLetras y SoloNumeros

Notapor Héctor Miguel » 18 Dic 2011 02:54

hola, ! (yo aqui, solo "rizando el rizo") :)
TodoExcel escribió:Con estas 2 funciones podrás separar solo letras o solo números de una cadena de texto.

http://www.todoexcel.com/funciones-solo ... lonumeros/

Salu2.xls

(cuando se puede) me gusta evitar los bucles y trabajar con la matriz en un solo paso (p.e.)
con esta funcion eliges si eliminar los numeros (por omision) o las letras de una cadena alfanumerica:
Código: Seleccionar todo
Function Limpia(cadena, Optional num_let As Boolean = 0)
  Dim pat As String: pat = IIf(num_let, "[^0-9]", "[0-9]")
  With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = pat: Limpia = .Replace(cadena, "")
  End With: If num_let Then Limpia = CLng(Limpia)
End Function

con el mismo ejemplo de la pagina referida (werf432-3edre223*?) en la celda [B2] y el uso de la funcion...
=Limpia(b2) devuelve: werf-edre*?
=Limpia(b2,1) devuelve: 4323223 (y ya con formato numerico)

para el argumento "num_let" se puede usar falso (o cero) / verdadero (o diferente de cero)

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31

Re: Funciones SoloLetras y SoloNumeros

Notapor TodoExcel » 19 Dic 2011 07:07

Muy buena alternativa!

¿Podrías añadirle un argumento más a la función tal que podamos elegir limpiar también otros caracteres que no sean números o letras?

Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
TodoExcel
Manager Exceluciones
Manager Exceluciones
 
Registrado: 05 Jun 2004 16:05

Re: Funciones SoloLetras y SoloNumeros

Notapor Héctor Miguel » 20 Dic 2011 00:52

hola, !
¿Podrías añadirle un argumento más a la función tal que podamos elegir limpiar también otros caracteres que no sean números o letras?

esta propuesta/alternativa usa ya un segundo argumento bi-valente (limpia numeros o limpia NO-numeros), me gustaria preguntar como se haria la llamada a la funcion con un tercer argumento sin desequilibrar al segundo o si la idea es que con el segundo argumento se determinen mas opciones que solo numeros o no-numeros y (en su caso) determinar si sera sensible a las (may/min)usculas ?

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31

Re: Funciones SoloLetras y SoloNumeros

Notapor TodoExcel » 20 Dic 2011 07:22

En el caso de dejar solo números está bien.

En el caso de dejar solo letras sería bueno un tercer argumento (0 o 1) para que además limpie todo lo que no sea alguna letra del abedecario (si no está dentro de "abcdefghijklmnopqrstuvwxyz" que lo limpie). Este segundo argumento opcional solo operaría en el caso de solo letras.

Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
TodoExcel
Manager Exceluciones
Manager Exceluciones
 
Registrado: 05 Jun 2004 16:05

Re: Funciones SoloLetras y SoloNumeros

Notapor Héctor Miguel » 20 Dic 2011 14:40

hola, !

con un pequeño giro se puede usar solo un argumento opcional (el mismo segundo) +/- de la siguiente forma:
las opciones para el argumento (num_car_az) son:
1: devuelve solamente numeros (convertidos a numero)
2: devuelve caracteres (excepto numeros)
3: devuelve solo literales [A-Z] sin importar si (may/min)usculas
Código: Seleccionar todo
Function Limpia(cadena As String, Optional num_car_az As Byte = 1)
  Dim pat As String
  Select Case num_car_az
    Case 2: pat = "[0-9]"
    Case 3: pat = "[^a-z]"
    Case Else: pat = "[^0-9]"
  End Select
  With CreateObject("vbscript.regexp")
    .Global = True
    .IgnoreCase = True
    .Pattern = pat
    Limpia = .Replace(cadena, "")
  End With
  If num_car_az = 1 Then Limpia = CLng(Limpia)
End Function

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31

Re: Funciones SoloLetras y SoloNumeros

Notapor TodoExcel » 21 Dic 2011 07:29

EXCELente!

Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
TodoExcel
Manager Exceluciones
Manager Exceluciones
 
Registrado: 05 Jun 2004 16:05


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros, programación y códigos

¿Quién está conectado?

Usuarios navegando por este Foro: ArmandoPR y 1 invitado