** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Extraer cifra de cadena alfanumérica
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Extraer cifra de cadena alfanumérica

 Responder Responder
Autor
Mensaje
Peter Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Octubre/2005
Localización: Alemania
Estado: Sin conexión
Puntos: 270
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Peter Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Extraer cifra de cadena alfanumérica
    Enviado: 15/Mayo/2019 a las 10:35
Problema: al importar datos a Access se observa que en una cadena donde debe haber un valor numérico (Valor de venta) se presenta una cadena conteniendo una combinación de letras y números como por ejemplo "13.500,00 EUR" o  "1.000,00 USD" o "234.567,00 ERROR"

En Excel resolví el problema con una fórmula "=VERWEIS(9^9;--LINKS(AA18;SPALTE(17:17)))"  [Verweis es la versión alemana de "Buscar"]

Deseo encontrar una solución similar en una consulta de Access y si esto no fuera posible, entonces con un código que afecte sólo a la columna de mi interés (en este caso "Valor de venta") y que genere un resultado en formato numérico

Gracias por las sugerencias
Peter
Arriba
fcoval Ver desplegable
Habitual
Habitual


Unido: 19/Enero/2013
Estado: Sin conexión
Puntos: 120
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita fcoval Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Mayo/2019 a las 11:15
Hay muchos caminos... te pongo uno de ellos basado en una función y que luego llamas desde tu consulta:


a: CLargo(CogeSoloDigitos([Valor de venta]))


---
Public Function CogeSoloDigitos(strChar As String)

Dim l       As Integer
Dim i       As Integer
Dim Char    As String
Dim strAN   As String
Dim strStr As String

strAN = "0123456789"

l = Len(strChar)

For i = 1 To l
Char = Mid(strChar, i, 1)
    If InStr(strAN, Char) Then
       strStr = strStr & Char
    End If
Next i

CogeSoloDigitos = strStr


End Function
Arriba
jilo Ver desplegable
Colaborador
Colaborador


Unido: 19/Diciembre/2004
Localización: TAFALLA
Estado: Sin conexión
Puntos: 850
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jilo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Mayo/2019 a las 19:07
Hola,

Otra manera
Poniendo el codigo en un modulo, le pasas el valor (13.500,00 EUR/Error/USD/...) y te devolverá 13500.00
Public Function DameImporte(ByVal Dato As String) As Currency
   On Error Resume Next
   With CreateObject("vbscript.regexp")
      .Pattern = "[A-Z]\w+"
      DameImporte = CCur(.Replace(Dato, ""))
   End With
End Function

Espero te sirva !!!!!!
Iñaki
Arriba
emiliove Ver desplegable
Moderador
Moderador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 4920
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Mayo/2019 a las 19:29
Sin función:
Left("2.222.321,80 euros",InStr("$2.222.321,00 euros", ",")+2)

Saludos.


Editado por emiliove - 15/Mayo/2019 a las 19:30
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable