Imprimir página | Cerrar ventana

Extraer cifra de cadena alfanumérica

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84497
Fecha de impresión: 20/Septiembre/2019 a las 15:10


Tema: Extraer cifra de cadena alfanumérica
Publicado por: Peter
Asunto: Extraer cifra de cadena alfanumérica
Fecha de publicación: 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



Respuestas:
Publicado por: fcoval
Fecha de publicación: 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


Publicado por: jilo
Fecha de publicación: 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


Publicado por: emiliove
Fecha de publicación: 15/Mayo/2019 a las 19:29
Sin función:
Left("2.222.321,80 euros",InStr("$2.222.321,00 euros", ",")+2)

Saludos.



Imprimir página | Cerrar ventana