Jump to content

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


verzulsan

Recommended Posts

Posted

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

Posted

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

Posted

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

Posted

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

Guest Cacho R
Posted

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]

Posted

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

Posted

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

Posted

=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

Guest Cacho R
Posted

¡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

Posted

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.

Posted

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.

Posted
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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy