Jump to content

Extraer una palabra entre varios caracteres


Folleloide

Recommended Posts

Hola!

Soy nuevo por aquí! Os cuento; Estoy trabajando en un proyecto donde tengo una fila de registros de servidor con 5000 filas de excel a diario que hay que depurar. Estoy intentando extraer determinados elementos dentro de una cadena, directorio o parte de una url  ->

Ejemplo: /ayuda-excel.php

Llevo varios días buscando una fórmula que me permita extraer los datos entre los caracteres que yo elija, pero no doy con nada que me funcione de forma correcta. He probado con estas combinaciones, a ver si veis algún error o podéis echarme una mano. (Como veréis, la url de la que se quiere extraer estaría en la celda E2)

=EXTRAE(IZQUIERDA(E2;ENCONTRAR("/";E2)+10);ENCONTRAR(".";E2)+1;LARGO(E2)) -> Esta es la que más me convence y no llego a entender que estoy haciendo mal.

=IZQUIERDA(E8;BUSCAR("/";E8;10)) -> En esta no estoy poniendo límites y por tanto me coge hasta el número que yo le doy.

Perdonad si hay algún error, no soy un especialista con las funciones.

El problema es que la secuencia del ejemplo anterior va cambiando y a veces es "/ayuda-excel.php" ,otras "/ayuda-excel/" y otras "/ayuda-excel". Podéis ayudarme a encontrar la forma de extraer esto de forma correcta? Llevo varios días dándole vueltas, pero no encuentro solución.

Espero que podáis echarme una mano!

Gracias de antemano!

Link to comment
Share on other sites

 

Hace 13 minutos , Leopoldo Blancas dijo:

Hola,

Debes de poner 10 ejemplo claros. Como son tus cadenas originales y que quieres obtener?, ya que hay direcciones muy largas, etc.

Saludos.

 

 

Vale! Me explico mejor:

Para que veas ejemplos de los datos que tengo y las cadenas posibles:

/robots.txt

/wp-cron.php?50=2

/

/wp-content/uploads/2017/06

/dormir-relajado/

Estas son todas las cadenas posibles que tengo en el archivo, el resto serían variaciones de estas pero con los mismos patrones: Empiezan siempre por "/" y acaban en varios caracteres posibles como son ".","/", o espacio " ".

Lo que busco es sacar de lo que hay arriba en la columna derecha:

robots

wp-cron

wp-content

dormir-relajado

Básicamente es sacar el primer directorio o parte de cada url. Muchas gracias por la ayuda!

Edito: He probado con alguna macro con expresiones regulares que me saquen los datos que te comento, pero tampoco he llegado a una solución.

Saludos

Link to comment
Share on other sites

¡Hola, a ambos!

Hace 10 horas, Folleloide dijo:

Empiezan siempre por "/" y acaban en varios caracteres posibles como son ".","/", o espacio " ".

Otra opción puede ser:

=EXTRAE(A2;2;MIN(HALLAR({".";"/";" "};EXTRAE(A2;2;99)&"./ "))-1)

Nota: Mi separador de argumentos es ";".  Si no es el tuyo, cámbialo por "," o por el que maneje tu sistema.  ¡Bendiciones!

Link to comment
Share on other sites

Hace 12 horas, Leopoldo Blancas dijo:

Hola,

o lo necesitas en macro?, comentas.

Saludos.

Sin título.png

 

Hace 2 horas, johnmpl dijo:

¡Hola, a ambos!

Otra opción puede ser:


=EXTRAE(A2;2;MIN(HALLAR({".";"/";" "};EXTRAE(A2;2;99)&"./ "))-1)

Nota: Mi separador de argumentos es ";".  Si no es el tuyo, cámbialo por "," o por el que maneje tu sistema.  ¡Bendiciones!

Hola de nuevo!

Increíble! Me han funcionado las dos a la primera. Mil gracias! No se si esto sería posible pasarlo a una macro para meter los datos y que se extraiga automáticamente el resultado.

Cita

o lo necesitas en macro?, comentas.

De esta forma sería perfecto, ya que no `tendría el límite de líneas que yo haya establecido en el documento. No soy muy experto con las macros y más a este nivel 😩 Eso sería perfecto Leopoldo!

La segunda de johnmpl me ha funcionado perfecta, pero en el caso de los "/" no me los referenciaba en la columna de resultado, por tanto no me llegaba a servir del todo. Aún así, funcionaba perfecto. Gracias por la ayuda!

La de Leopoldo ha sido la correcta y la que me ha funcionado perfecto. Además, referencia los "/" en la columna de resultado, que es algo que necesitaba para más tarde construir estadísticas, etc. Muchas gracias por la ayuda Leopoldo y por la respuesta tan rápida!

Muchas gracias a los dos por la ayuda!!

Saludos!!

Link to comment
Share on other sites

Hace 1 minuto , Leopoldo Blancas dijo:

Hola a ambos,

Solo modifica la formula de John así:


=SI(A2="/","/",EXTRAE(A2,2,MIN(HALLAR({".";"/";" "},EXTRAE(A2,2,99)&"./ "))-1))

Saludos  a ambos.

 

Hola de nuevo Leopoldo!

Gracias por el aporte. La tuya me ha funcionado perfecto. Aún así, me guardo esta modificada ya que también funciona. Ves posible pasar esto a una macro? Como podría automatizar este proceso de forma que introduzca los datos y me saque el resultado?

Además, es principalmente por el número de líneas que yo haya establecido en el archivo original. Creo que con la macro esto no pasaría y podría extraer todos los datos que se introduzcan en esa columna. Sean 2000 o 5000. En el caso de que sean más que los establecidos en el archivo original.

Saludos y gracias de nuevo!

Link to comment
Share on other sites

Hace 18 horas, johnmpl dijo:

¡Hola, de nuevo!

En el archivo están 2 propuestas.  La mía corregida (igual a la que te propuso @Leopoldo Blancas en el post anterior... podrías haberlo hecho tu en mi fórmula), y una propuesta con VBA (presionando en la flecha azul).

¡Comentas! ¡Bendiciones!

Ejemplo.xlsb 19 kB · 2 downloads

 

Hace 18 horas, Leopoldo Blancas dijo:

Hola a Ambos,

Mi Aporte: Pulsa sobre la flecha azul...!!!

Saludos.

 

Formulas_ObtenerDireccionURL_LBV.xlsm 18 kB · 2 downloads

Cualquiera de las dos perfectas y me han funcionado. 😃

Muchas gracias por el pedazo de aporte y la ayuda!!

Saludos!!

Link to comment
Share on other sites

Archived

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

Guest
This topic is now closed to further replies.
  • Crear macros Excel

  • Posts

    • Muchas gracias a los dos. Ambas respuestas me han servido, pero por sencillez he optado por la de JSDJSD. No obstante, como comenté anteriormente, tengo que tener siempre activa una impresora (de tickets) entonces si le doy a la macro, al crearse el PDF lo hace en el formato de esa impresora. Por tanto, pensé en el inicio de ejecutar la macro poner:  Application.ActivePrinter = "Microsoft Print to PDF" Y una vez finalizada la macro, cambiar a la impresora de Tickets, pero me da error. ¿Hay alguna forma de conseguir esto que comento? Gracias.
    • Ya puedes descargar un Test de Excel, hecho con el cálculo iterativo de las fórmulas de Excel.¡Mentira!¡No lo vas a poder descargar!He incrustado el test en mi blog, y sólo vas a poder realizar el test en modo online, desde un navegador Web o con una tableta o un móvil Android o Mac.   Enlace aquí:https://pedrowave.blogspot.com/2021/10/test-de-excel-con-calculo-iterativo.html     Ventajas de tener el Test de Excel en la nube: No contiene macros VBA ni Office Script. Se actualiza automáticamente al ser un Excel en la Web. Siempre verás la versión más actualizada del Test. Todos los usuarios harán el Test en las mismas condiciones. Se puede hacer el Test en la nube, incluso sin tener Excel instalado. Puedes hacer comentarios al Test en la nube. Puedo actualizar el Test cuando quiera para añadir más preguntas. Puedo modificar su comportamiento, mejorar su uso y/o corregir errores. Puedo proteger mucho mejor mis derechos de autor, para que no se pueda copiar mi idea de este Test de Excel. Gracias anticipadas por seguirme, por tus reacciones y por tus comentarios.
    • Prueba esto:   Sub guarda_pdf()     ruta = ActiveWorkbook.Path & "\salida3.pdf"     ActiveSheet.PageSetup.PrintArea = "$A$2:$P$42"     Application.PrintCommunication = False     With ActiveSheet.PageSetup         .LeftHeader = ""         .CenterHeader = ""         .RightHeader = ""         .LeftFooter = ""         .CenterFooter = ""         .RightFooter = ""         .LeftMargin = Application.InchesToPoints(0)         .RightMargin = Application.InchesToPoints(0)         .TopMargin = Application.InchesToPoints(0)         .BottomMargin = Application.InchesToPoints(0)         .HeaderMargin = Application.InchesToPoints(0)         .FooterMargin = Application.InchesToPoints(0)         .PrintHeadings = False         .PrintGridlines = False         .PrintComments = xlPrintNoComments         .CenterHorizontally = True         .CenterVertically = True         .Orientation = xlLandscape         .Draft = False         .PaperSize = xlPaperLetter         .FirstPageNumber = xlAutomatic         .Order = xlDownThenOver         .BlackAndWhite = False         .Zoom = False         .FitToPagesWide = 1         .FitToPagesTall = 1         .PrintErrors = xlPrintErrorsDisplayed         .OddAndEvenPagesHeaderFooter = False         .DifferentFirstPageHeaderFooter = False         .ScaleWithDocHeaderFooter = True         .AlignMarginsHeaderFooter = True         .EvenPage.LeftHeader.Text = ""         .EvenPage.CenterHeader.Text = ""         .EvenPage.RightHeader.Text = ""         .EvenPage.LeftFooter.Text = ""         .EvenPage.CenterFooter.Text = ""         .EvenPage.RightFooter.Text = ""         .FirstPage.LeftHeader.Text = ""         .FirstPage.CenterHeader.Text = ""         .FirstPage.RightHeader.Text = ""         .FirstPage.LeftFooter.Text = ""         .FirstPage.CenterFooter.Text = ""         .FirstPage.RightFooter.Text = ""     End With     Application.PrintCommunication = True          ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _         ruta, Quality:=xlQualityStandard, _         IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _         False End Sub  
    • Aquí adjunto un excel de prueba.  Lo que me gustaría es guardar las tablas (en la prueba están vacías) en una única hoja horizontal en PDF.  La opción de imprimir que comenta Exceler C no me sirve, ya que tengo que tener una impresora activa todo el rato y no puedo cambiarla por la de Microsoft Print To PDF. Gracias. Prueba.xlsm
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy