Saltar al contenido

Separar datos con separadores de forma automática


Folleloide

Recommended Posts

publicado

Hola genios del excel! :)

Estoy por aquí de nuevo a ver si podéis echarme una mano. Sigo trabajando en el mismo proyecto en el que estaba trabajando en relación a este tema y prácticamente ya no me queda nada, pero tengo un problema que no doy solucionado. 

https://ayudaexcel.com/foro/topic/41871-extraer-una-palabra-entre-varios-caracteres/

El caso: Yo recibo un documento con todos los datos en bruto y a partir de esa línea de datos los separo en excel para aplicar el análisis de los mismos y las macros correspondientes (En las que me habéis sido de gran ayuda)

Para que entendáis mejor a que me refiero, lo explico un poco mejor; Estos datos en bruto vienen en un archivo de excel. Hasta ahora, para descomponerlos y separarlos estaba importando desde otro archivo de excel estos datos y añadiendo la configuración correspondiente para que las líneas sean sólo 2 columnas. 

Con este proceso: Datos -> Desde texto/CSV -> Origen del archivo: Europeo/ Delimitador: Coma / Detección del tipo de datos -> Basado en todo el conjunto.

338831587_importacindedatosexcelbuena.thumb.jpg.6c58d82e4367509a43484f7a63efcf86.jpg

Después de esto, descompongo toda la línea en los datos que necesito; Hora, fecha, url, etc. (En la columna message)

Si no lo hago de esta forma y parto directamente del archivo en bruto, la línea se me descompone totalmente.

En algunas está completa en 1 sola columna y en otras se descompone en varias columnas. (De esta forma se me complica mucho descomponer en columnas con separadores todos los datos, ya que no tienen la misma estructura de columnas)

Aquí viene la duda y el problema que me surge en estos momentos. Si importo los datos como explico más arriba, podría crear una macro que haga esta separación? Con el objetivo de automatizar todo y que sólo sea necesario importar estos datos a un archivo y copiarlos al excel correspondiente con esta automatización que comento.

El problema que veo principalmente es crear la macro que genere esa separación. No se si es posible

Para que veáis a que datos me refiero os dejo un ejemplo de donde tendría que partir la macro o el proceso de separación:

1º Columna: Timestamp (Esta columna es irrelevante y por tanto podría borrarla)
2ª Columna: mensaje (Esta es la columna que contiene los datos que necesito separar)

Añado un ejemplo de los datos

159.57.406.205 - - [05/May/2019:11:36:09 +0200] "GET /mi-url/ HTTP/1.1" 200 23738 "https://midominio.com" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

Los datos que necesito por columna serían los siguientes:

Ip = 159.57.406.205
Fecha = 05/May/2019
Hora = 11:36:09
Código = +0200
Método = GET
url destino = /mi-url/
Protocolo: HTTP/1.1
Código resp: 200
Tamaño = 23738
url origen = https://midominio.com (En este caso varía y puede salir una url o el símbolo "-")
Agent = Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

Espero que se entienda y que me haya explicado con claridad. Si necesitais más ejemplos, no tengo problema en añadirlos.¡¡Espero que podáis ayudarme a encontrar una solución!! :)

Si puedo crear algo que me separe los datos automaticamente en el momento de meterlos en el archivo "plantilla" de excel -> Donde van las macros, etc. Podría conseguir lo que busco = automatizar todo el proceso

Saludos a todos y mil gracias!!!
 

publicado

Como no puedo editar el primer mensaje, añado aquí el archivo que tendría en primer momento después de importar desde texto/csv

Como véis, tengo dos columnas y la columna B es la que necesito separar. Lo ideal sería que la separación la hiciese en otra hoja para tener la hoja 1 como maestra (donde meter los datos cada vez que se descargan) y que los pinte en la hoja 2.

He intentado hacerlo con fórmulas pero no logro llegar a un resultado correcto.

Adjunto el archivo -> separador de datos.xlsx

publicado

 

Hola de nuevo! 

Nadie sabe como puedo hacer para separar lo que pongo en el primer comentario?

O al menos decirme si es viable hacerlo a través de una macro! Sorry pero desconozco como proceder con la macro a este nivel. Sería de gran ayuda!

Gracias a todos de nuevo!

publicado

Hola, 

Por el momento me estoy dedicándome a otras cosas y si de repente veo lo que hay en el foro, pero no te puedo ayudar, Aunque es fácil de hacer. Pero mensajes en PRIVADO NO AYUDO.

Y es lo malo de no ser claro desde el inicio y yo casi nunca respondo dos veces el mismo Post si no son claros.

Saludos

publicado
Hace 10 minutos , Leopoldo Blancas dijo:

Hola, 

Por el momento me estoy dedicándome a otras cosas y si de repente veo lo que hay en el foro, pero no te puedo ayudar, Aunque es fácil de hacer. Pero mensajes en PRIVADO NO AYUDO.

Y es lo malo de no ser claro desde el inicio y yo casi nunca respondo dos veces el mismo Post si no son claros.

Saludos y espera ayuda del foro.

Hola Leopoldo.

No entiendo lo de "no ser claro desde el principio". En todo momento he sido claro, de echo en el primer comentario he puesto ejemplos y de todo para ser lo más claro posible. No entiendo a que te refieres con eso. Siento haberte molestado, no era mi intención. 

Saludos

publicado

Al decir no son claros me refiero a que en un primer post se te resolvio y se cerro el tema.

 

Y ahora presentas una Cadena o String mas larga... que no logras adaptar con la ayuda que ya se te dio.

Saludos

publicado
Hace 25 minutos , Leopoldo Blancas dijo:

Al decir no son claros me refiero a que en un primer post se te resolvio y se cerro el tema.

 

Y ahora presentas una Cadena o String mas larga... que no logras adaptar con la ayuda que ya se te dio.

Saludos.

P.D.: Espera ayuda del foro. En verdad ando ocupado en otras cosas.

 

 

He intentado adaptar la macro anterior al nuevo ejemplo, pero sólo logro representar los datos en una de las celdas, cuando ahora busco que esos datos se representen separados en dicersas celdas para posteriormente aplicar un análisis.

Perdona mi desconocimiento, seguiré trabajando para llegar al resultado correcto. Si alguién se anima a aportar alguna idea será bienvenida.

De nuevo gracias por la ayuda Leopoldo y siento haberte ofendido. 

Saludos

publicado
Hace 18 horas, Gerson Pineda dijo:

Hola 

Te adjunto archivo con 2 métodos

Antes de preguntar, revisa y evalúa cada método, como además lee/estudia sobre cada instrucción utilizada en Vba, si aun si tienes dudas, pues no avisas, que con gusto te vamos a colaborar

 

Saludos 

Separar datos en columnas Vba_GP.zip 16 kB · 4 downloads

Muchas gracias @Gerson Pineda. Estoy revisando cada línea de la macro para saber como lo has hecho. Cualquier duda os preguntaré seguro ? 

Se agradecen vuestros aportes!!

Saludos!

Archivado

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

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
    • Hola, tal cual se plantea, solamente con macros (VBA); en todo caso, hacerlo a mano o con "CTRL + ;". Saludos.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.