Saltar al contenido

ETRAER DATOS DE UNA CADENA DE TEXTO


kloxtnx

Recommended Posts

publicado

Buenas noches 

tengo esta cade de texto

\\000.000.000\recepcion\A. MENARINI LATIN AMERICA, S.L.U. - SUCURSAL COLOMBIA\900932340.ME10110.pdf

pero quiero extrer solo esta parte 900932340.ME10110.pdf

quisiera por favor saber que codigo me sirve para extraer esa parte o bien extraer una parte deseada

una idea de esto como yo lo hago normalmente en ecxel es que utilizo la funcion buscar ("/") y pues digamos que me arroja 3 luego vuelvo a utilizar la funcion, pero esta ves en ves de numero inical 1 pongo 4 para que omita el primer "/"

publicado

Hola

Al menos a mí no me queda tan claro, pero si mal no entendí, bastaría con fórmulas. 

De ser siempre la misma cantidad de dígitos la última parte:

=DERECHA(A2;21)

De no ser tal:

=EXTRAE(A2;HALLAR("^^";SUSTITUIR(A2;"\";"^^";LARGO(A2)-LARGO(SUSTITUIR(A2;"\";""))))+1;LARGO(A2)-HALLAR("^^";SUSTITUIR(A2;"\";"^^";LARGO(A2)-(1+LARGO(SUSTITUIR(A2;"\";""))))))

No olvides que he supuesto que tus datos están en A2 y además yo uso el punto y coma como separador de argumentos, solo reemplaza si tú usas las comas.

De ser tu pregunta sobre macros, da mejores detalles y muestra tus avances.

publicado

Hola @klox y todos,

Me apunto a la fiesta con:

=EXTRAE(A2;LARGO(A2)-LARGO(ESPACIOS(DERECHA(SUSTITUIR(A2;"\";REPETIR(" ";99));99)))+1;LARGO(ESPACIOS(DERECHA(SUSTITUIR(A2;"\";REPETIR(" ";99));99)))+1)

Y como veo en el perfil de @kloxtnxque es usuario de 365, en esa versión le pueden servir:
 

=EXTRAE(A2;COINCIDIRX("\";EXTRAE(A2;SECUENCIA(LARGO(A2));1);0;-1)+1;LARGO(A2)-COINCIDIRX("\";EXTRAE(A2;SECUENCIA(LARGO(A2));1);0;-1)+1)
=EXTRAE(A2;HALLAR(LET(x;DIVIDIRTEXTO(A2;"\";;;);INDICE(x;CONTARA(x)));A2);LARGO(A2)-HALLAR(LET(x;DIVIDIRTEXTO(A2;"\";;;);INDICE(x;CONTARA(x)));A2))

 

publicado

Si se prefiere acortar las fórmulas, funcionará también estableciendo el largo del texto como número de caracteres a extraer:

=EXTRAE(A2;LARGO(A2)-LARGO(ESPACIOS(DERECHA(SUSTITUIR(A2;"\";REPETIR(" ";99));99)))+1;LARGO(A2))
y con MSO 365:
=EXTRAE(A2;COINCIDIRX("\";EXTRAE(A2;SECUENCIA(LARGO(A2));1);0;-1)+1;LARGO(A2))
=EXTRAE(A2;HALLAR(LET(x;DIVIDIRTEXTO(A2;"\";;;);INDICE(x;CONTARA(x)));A2);LARGO(A2))

Un saludo, Fernando

publicado
En 21/11/2022 at 19:45 , kloxtnx dijo:

\\000.000.000\recepcion\A. MENARINI LATIN AMERICA, S.L.U. - SUCURSAL COLOMBIA\900932340.ME10110.pdf

pero quiero extrer solo esta parte 900932340.ME10110.pdf

Hola a todos

Suponiendo que tus datos inician en A1

Dejo otra posible solución

=LET(m_,ENCOL(DIVIDIRTEXTO(A1,"\")),INDICE(m_,COINCIDIR("pdf",m_)))

 

Saludos

publicado

Uy carambas, todo el mundo quiere participar jejeje. 

Va entonces también la propuesta con TypeScript jejeje:

function main(workbook: ExcelScript.Workbook) {
	workbook.getActiveWorksheet().getRange("B3").setFormula("=MID(A2,SEARCH(\"^^\",SUBSTITUTE(A2,\"\\\",\"^^\",LEN(A2)-LEN(SUBSTITUTE(A2,\"\\\",\"\"))))+1,LEN(A2)-SEARCH(\"^^\",SUBSTITUTE(A2,\"\\\",\"^^\",LEN(A2)-(1+LEN(SUBSTITUTE(A2,\"\\\",\"\"))))))");
}

Obvio solo válido si el amigo tiene Excel 365 en algunas de sus ediciones que traen Office Scritps.

Saludos

publicado
hace 2 minutos , Abraham Valencia dijo:

Obvio solo válido si el amigo tiene Excel 365

No estaria mal, que probaras con esta

Hace 1 hora, Gerson Pineda dijo:
=LET(m_,ENCOL(DIVIDIRTEXTO(A1,"\")),INDICE(m_,COINCIDIR("pdf",m_)))

Adaptándola a TS, es decir supongo que reconocería las nuevas funciones 

 

publicado

Con la fórmula de Gerson:

function main(workbook: ExcelScript.Workbook) {
	workbook.getActiveWorksheet().getRange("B13").setFormula("=LET(m_,TOCOL(TEXTSPLIT(A2,\"\\\")),INDEX(m_,MATCH(\"pdf\",m_)))");
}

 

publicado
Ahora mismo, Antoni dijo:

Luego  no me digais que doy soluciones con macros en el foro de fórmulas. ¿Vale? ?

Ahora la versatilidad de Excel, es de otras dimensiones?

Vamos, anímate con las funciones, no les tengas miedo ?

publicado

Insisto, en el foro de macros, debe marcarse como solución una macro ? y no una fórmula.

Por cierto, la solución marcada, tampoco es la mejor, para mi es esta.

=TEXTODESPUES(A1,"\",-1)

 

publicado

Buenas tardes sr Antoni que pena, la solucion suya era la ideal,  pero no habia notado que  marque la otra por error, saludos y gracias

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.