Saltar al contenido

Extraer cadena restante a partir de la ultima aparicion de un caracter dado.


verzulsan

Recommended Posts

publicado

Hola,

Visto el tema Extract the last token in a cell en Daily Dose of Excel, me ha dado por, (antes de conocer que no se podia postear en ese foro), intentar hacer mi propia formula de lo mismo, nada que ver con las muchas que han sacado los expertos formulianos ya que la mia es descomunalmente larga, pero me quedo contento con haber podido sacar mi propia version.

En el adjunto tenéis el paso a paso. A ver si os animáis a simplificarla.

Saludos

Extraer Final.xls

publicado

En orden de preferencia.

De las opciones que he visto en los foros y/o blogs es la que mas me agrada. En caso muy remoto que el tamaño del texto después del SUSTITUIR rebasara los 32768 caracteres la formula devolvería error.

=SUSTITUIR(DERECHA(SUSTITUIR(B3;"\";REPETIR(CARACTER(1);999));999);CARACTER(1);"")
[/CODE]

Esta funciona pero es matricial y se tiene que confirmar con Ctrl+Shift+Enter

[CODE]=DERECHA(B3;COINCIDIR("\";EXTRAE(B3;LARGO(B3)+1-FILA(1:33000);1);0)-1)[/CODE]

La misma que la anterior pero con una modificación para evitar confirmar con Ctrl+Shift+Enter. Sin embargo sigue siendo matricial

[CODE]=DERECHA(B3;COINCIDIR("\";INDICE(EXTRAE(B3;LARGO(B3)+1-FILA(1:33000);1);0);0)-1)[/CODE]

Y por ultimo probablemente la mas popular en los foros y/o blogs.

[CODE]=REEMPLAZAR(B3;1;ENCONTRAR(CARACTER(1);SUSTITUIR(B3;"\";CARACTER(1);LARGO(B3)-LARGO(SUSTITUIR(B3;"\";""))));"")[/CODE]

Saludos

publicado

Gracias por la traduccion sailepaty, intenté meterlas en mi excel pero no iban en ingles. La primera que pones es la unica que no veo el resultado, no da error tampoco. Pongo mi version que arriba se me olvido ponerla:

=EXTRAE(SUSTITUIR(B3;"\";"™";LARGO(SUSTITUIR(B3;"\";".."))-LARGO(B3));HALLAR("™";SUSTITUIR(B3;"\";"™";LARGO(SUSTITUIR(B3;"\";".."))-LARGO(B3));1)+1;1000)[/CODE]

Un saludo

publicado

Disculpa la 1a. opción tenia un espacio al final. Asi te debe de funcionar.

=SUSTITUIR(DERECHA(SUSTITUIR(B3;"\";REPETIR(CARACTER(1);999));999);CARACTER(1);"")

[/CODE]

Saludos

Invitado Cacho R
publicado

Agrego una más "a la colección":

=MED(B3;1+MAX((MED(B3;FILA(1:3000);1)="\")*FILA(1:3000));3000)[/CODE]

[size=3][font=comic sans ms]

Saludos, Cacho R.[/font][/size]

publicado

verzulsaaaannn Antoni te va reprender porque andas coqueteando con los formulianos jeje

La mia con una leve modificacion a la de Cacho

=EXTRAE(B3,MAX(INDICE((EXTRAE(B3,FILA(INDIRECTO("1:"&LARGO(B3))),1)="\")*FILA(INDIRECTO("1:"&LARGO(B3))),))+1,LARGO(B3))[/HTML]

NO es matricial (aunque como dice sailepaty en el fondo son matricial)

Saludos a todos

publicado

Excelentes aportes, yo también lo he intentado (espero no esté repetida):

=DERECHA(B3;LARGO(B3)-HALLAR("³";SUSTITUIR(B3;"\";"³";LARGO(B3)-LARGO(SUSTITUIR(B3;"\";"")))))[/CODE]

Un saludo a todos

publicado

=MED(B3;1+MAX((MED(B3;FILA(1:3000);1)="\")*FILA(1:3000));3000)

Buena Cacho, pero para librar la posibilidad minima de textos muy largos yo le aumentaria el 3000 a 33000.

Saludos

PD. Pregunto, quien se esta encargando de poner las formulas como si fueran codigos VBA? Y cual es la razon?

Gracias

Invitado Cacho R
publicado

¡Maldición!... ¡Tengo que ir al oftalmólogo!...

¡Quise poner 30000 (a raíz de un comentario que hicieras más arriba), y me faltó un cero!

(jajaja)

Gracias por estar atento.

Saludos, Cacho R.

Buena Cacho, pero para librar la posibilidad minima de textos muy largos yo le aumentaria el 3000 a 33000.

Saludos

PD. Pregunto, quien se esta encargando de poner las formulas como si fueran codigos VBA? Y cual es la razon?

Gracias

publicado

Joer que maquinas sois todos. Al final mi formula es la que mas funciones gasta de todas jajaja.

Muchas gracias por vuestras respuestas, estoy aprendiendo muchisimo del mundo formuliano..., definitivamente Gerson, creo que Antoni me va a echar la bronca jajajaja.

Un saludo amigos.

publicado

Por alusiones:

Cadena = Mid(Texto, InStrRev(Texto, Caracter) + 1)[/CODE]

Como dijo Einstein, las fórmulas han de ser simples y hermosas

Hoy no hay playa porqué está nublado.

publicado
Por alusiones:

Código:

Cadena = Mid(Texto, InStrRev(Texto, Caracter) + 1)

Como dijo Einstein, las fórmulas han de ser simples y hermosas

Hoy no hay playa porqué está nublado.

Antoni ya vas caendo jaja con las formulas... por cierto muy buena la udf

Saludos master

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.