Visual Basic - Caracteres que NO aparecen en Rango

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Caracteres que NO aparecen en Rango

Publicado por Blas (15 intervenciones) el 16/05/2020 12:03:14
Hola Hola. espero que se encuentren muy bien,

Les cuento que tengo una lista con mas de 15000 titulos de libros los cuales quiero procesar con formulas o VBA de busqueda.
Algunas formulas para conocer la ultima aparicion de una palabra o caracter en una cadena incluye la funcion sustituir, donde la formula o funcion sustituira el caracter por otro, de ese modo la otra parte de la funcion anidada encuentra su ubicacion.

El problema es que tengo tantos caracteres en mi rango que desconozco cual no existe para poder usarlo de comodin.. la lista se actualiza permenentemente por lo que la eleccion del caracter debe ser revisada en cada ocasion.

En realidad da igual si lo aplico en VBA o Formula aunque prefiero el primero.

la formula que encontre para hallar la aparicion de la ultima palabra es

=ENCONTRAR("@",SUSTITUIR(A1,B3,"@",(LARGO(A1)-LARGO(SUSTITUIR(A1, B3,"")))/LARGO(B3)))

donde @ es el caracter que sustituira la ultima aparicion de una palabra. Aunque ese caracter aparece varias veces en el rango (mi rutina revisa cada fila)
A1= texto con la frase a analizar
B3= texto a buscar
separador usado = "coma"

En concreto necesito:
1- que el procedimiento lea cada caracter del rango y cargue en la variable X el caracter inexistente
2- que en lugar de @ coloque el nombre de la variable X

Por ultimo.. tambien acepto soluciones alternativas
Podria ser un bucle con step-1 que lea los caracteres desde atras hacia adelate buscando el caracter "("
De ese modo podre extraerlo siguiente

texto : jivjtmimalhcu43htuq((dsfERf45YN((/())(N/$N((/(/$#&dnmnfd,(584 libros)
ya hice un F=Mid(Cells(contador, 2), 1, Len(Cells(contador, 2)) - 8) que da como resultado
jivjtmimalhcu43htuq((dsfERf45YN((/())(N/$N((/(/$#&dnmnfd,(584
ahora necesito extraer el numero (varia la cantidad de cifras)


Espero su colaboracion.. gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Caracteres que NO aparecen en Rango

Publicado por Andres Leonardo (1798 intervenciones) el 16/05/2020 19:18:55
pregunto
De este texto que debe salir ??

texto : jivjtmimalhcu43htuq((dsfERf45YN((/())(N/$N((/(/$#&dnmnfd,(584 libros)


de este otro que quieres sacar??
jivjtmimalhcu43htuq((dsfERf45YN((/())(N/$N((/(/$#&dnmnfd,(584
ahora necesito extraer el numero (varia la cantidad de cifras)

otra pregunta cual es la contante el "(" o cual ... e
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Caracteres que NO aparecen en Rango

Publicado por Andres Leonardo (1798 intervenciones) el 16/05/2020 19:46:59
De lo qeu te entiendo puedes querer esto
EXTRAE

LA funcion es donde mandas el parametro el texto y el caracter que me dara la ultima ocurrencia.
Luego le hago un sustituir para quitar el ")"

1
2
3
4
5
6
7
8
Public Function ExtraeTexto(texto As String, separador As String) As String
Dim T As Variant 'PARA TENER EL TEXTO SEPARADO
ExtraeTexto = "No Encuentro El valor"
        T = Split(texto, separador)
        For j = 0 To UBound(T)
             ExtraeTexto = T(j)
        Next j
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Caracteres que NO aparecen en Rango

Publicado por Blas (15 intervenciones) el 17/05/2020 05:44:39
Hola Andres, realmente agradezco tu respuesta.
Veo que creaste una UDF la cual me trae la solucion al problema. En lugar de una funcion metere el codigo en una rutina para que, cada vez que pasa por la celda realice esa operacion..
Muchas gracias
Sobre tus preguntas.
El texto de interes es 584, pero puede ser cualquier numero entre 1 y 5 cifras.
Como recurrente, los textos finalizan con (66666 libros)

Gracias por tu genial aporte.

Tasmbien estuve probando la funcion IstrRev que extrae desde atras

Gracias !!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Caracteres que NO aparecen en Rango

Publicado por Andres Leonardo (1798 intervenciones) el 17/05/2020 17:19:12
Hola Blas,

Me alegro mucho que te haya servido si por ahi tienes algo mas qeu te haga falta avisame espero poder ayudarte

Saludos
Andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar