Hallar y Extraer valor con longitud variable

Segundo planteamiento:

De la siguiente cadena necesito fabricar una formula que encuentra y extraiga el importe en pesos, este mismo puede variar de longitud de caracteres según su total en este caso es de $219.00 pesos, pero podría ser una cantidad mayor o menor, podrían ayudarme, inclusive podría ser una instrucción fabricada en una macro:

https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=794FE19D-D375-4AC0-7444-72FECE323EF3&re=FOL870219V23&rr=INE140404NI0&tt=219.000000&fe=rL8nnQ== 

NOTA: Esta cadena de texto es extraída de un código QR, de una factura, por lo que analizo muchas y necesito extraer estos datos y llevar un registro en una base de datos

Respuesta
2

Utiliza la siguiente función.

Considerando que leyendo el texto de atrás hacia adelante, el primer punto es el del importe.

Function Obtener_Cifra(celda As Range)
'Por Dante Amor
    punto = InStrRev(celda.Value, ".")
    amper = InStr(punto, celda.Value, "&")
    igual = InStrRev(celda.Value, "=", punto)
    largo = amper - igual - 1
    cantidad = Mid(celda.Value, igual + 1, largo)
    Obtener_Cifra = Val(cantidad)
End Function


Sigue las Instrucciones para una Función

  1. Abre tu libro de excel
  2. Para abrir VBa y poder pegar la función, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la función
  5. En cualquier celda utiliza la función, como cualquier otra función de excel


Ejemplo:

Pon tu texto en la celda B2

En la celda C2 pon lo siguiente

=Obtener_Cifra(B2)

El resultado será:

219.00


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

gracias Dante Amor, pero me sale el siguiente mensaje:

Entra al menú de VBA y en Herramientas, Referencias, revisa que tengas marcadas las siguientes:

... Si amigo Dante ya lo verifique y esta configurado como tu imagen, al volver a utilizar en la celda tu función me sale el siguiente error:

Perdón por insistir, pero la verdad esto facilitaría mucho mi trabajo... te reitero mi agradecimiento, también te comento que este es uno de los dos puntos a resolver, el otro es el de :

https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=794FE19D-D375-4AC0-7444-72FECE323EF3&re=FOL870219V23&rr=INE140404NI0&tt=219.000000&fe=rL8nnQ== 

Que de acuerdo al acrónimo "&re" la cadena puedes ser de 12 caracteres pero si el acrónimo cambia a: "?rr" la cadena a extraer seria de 13 caracteres.

Gracias...¡

Por la descripción del mensaje de error es por la versión de excel que tienes.

¿Qué versión de excel tienes? ¿Es de office?

2 respuestas más de otros expertos

Respuesta
1

La cadena tiene una cualidad que puede ser usada sin importar el ancho de la cadena y es esta "tt=219.00000" dentro de este texto esta "tt=" que en ninguna otra parte de la cadena se repite, así que con esa base arme la siguiente fórmula, y listo el resultado que buscas.

=+TEXTO(VALOR(EXTRAE(A1,HALLAR("tt=",A1)+3,10)),"$ 0,0.00")

ME MARCA ERROR:

Verificaste que tus separadores no sean ; ¿En vez de puntos?, prueba entonces con esta fórmula

=+TEXTO(EXTRAE(K2,HALLAR("tt=",K2)+3,HALLAR("&fe",K2)-HALLAR("tt=",K2)-3),"$ 0,0.00"),

En la fórmula anterior tenia un ancho de 10 pero como veo que las decimales pueden ser 2 o pueden ser más de 2 esta fórmula que te envío se ajusta a la longitud de esos números, por ejemplo 219.0000 y 225.00 tiene longitud variable y si lo dejo con el ancho de 10 también va a a poner letras, lo cual va a crear un error que posiblemente sea lo que esta pasando, la fórmula hace una diferencia y saca el valor de la factura.

Te agradezco la respuesta me ha quedado perfecta, ya solo buscar la manera que el resultado quede como valor, de momento lo estare haciendo manual

... te reitero mi agradecimiento, también te comento que este es uno de los dos puntos a resolver, el otro es el de :

https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=794FE19D-D375-4AC0-7444-72FECE323EF3&re=FOL870219V23&rr=INE140404NI0&tt=219.000000&fe=rL8nnQ== 

Que de acuerdo al acrónimo "&re" la cadena puedes ser de 12 caracteres pero si el acrónimo cambia a: "?rr" la cadena a extraer seria de 13 caracteres.

Gracias...¡

Para cambiar a valor la fórmula es la siguiente

=+VALOR(EXTRAE(D2,HALLAR("tt=",D2)+3,HALLAR("&fe",D2)-HALLAR("tt=",D2)-3))

La anterior dejaba el valor como texto con formato de numero, esta deja el valor como numero, el formato se lo agregas con el Excel.

Respecto a lo otro no se a que te refieres o si lo que quieres es aplicar una variación de la fórmula para extraer el numero de la RFC del emisor de la factura, como quiera te paso esta variación de la fórmula en vez del &rr= usa las primeras iniciales del RFC del receptor que supongo es solo uno "=INE"

Respuesta
1

Esto te puede aportar algo más

https://youtu.be/0UuR_zRQCB4

https://youtu.be/smL4A-aRjCM

Visita https://programarexcel.com descarga cientos de ejemplso de macros gratis

suscribe https://www.youtube.com/c/programarexcel?sub_confirmation=1  activa la campana y youtube te avisará cuando se suban nuegos vídeos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas