Separar datos de una sola celda con una macro
PASO 3: La columna que inicialmente era B y con la eliminación del PASO 2 pasa a ser columna A. Y con texto de columnas u otra forma separar todos los datos ahí diligenciados en la columna A ya que la base de datos arrojaba todo junto.
Asi queda con la ejecución del PASO 2
Ahora la idea es desarrolllar el PASO 3 para que quede de la sgte forma:
Separo la identificación, del nombre de la empresa o persona, luego nombre del producto (venta o compra), luego moneda y luego valor
2 respuestas

Prueba con esta macro, en la imagen puedes ver el resultado, solo tienes que cambiar el A1 de la primera por la celda donde comincen tus datos
y esta es la macro
Option Base 1 Sub SEPARAR_DATOS() Set datos = Range("A1").CurrentRegion With datos FILAS = .Rows.Count For i = 2 To FILAS DATO = .Cells(i) separa = Split(DATO, " ") cuenta = UBound(separa) cuenta2 = cuenta - 3 ReDim matriz(1, 5) matriz(1, 1) = separa(0) matriz(1, 3) = separa(cuenta - 2) matriz(1, 4) = separa(cuenta - 1) matriz(1, 5) = separa(cuenta) texto = Empty For j = 1 To cuenta2 info = separa(j) If j = 1 Then texto = info If j > 1 Then texto = texto & " " & info Next j matriz(1, 2) = texto Range(.Cells(i, 3).Address).Resize(1, 5) = matriz Next i Set datos = Nothing End With End Sub

Hola como estas,
Ejecute la macro en un botón y me genero el sgte error. La ejecución de la macro es para la HOJA 2 llamada BASE DE DATOS

Ya la macro me ejecuto, pero tengo una inquietud es dos filas no me quedaron de manera ordenada. Adjunto imagen.

Ya probé la macro y este es el resultado, a mi no me marca error, la otra es que subas tu archivo a la nube, pegues el link para ver que esta pasando con tu archivo.

Envio link con la base de datos
https://www.dropbox.com/s/z1rffvyakixc2jn/EJERCICIO%20HIPOTETICO.xlsm?dl=0

Intente en dos computadores diferentes y me sigue generando el mismo error, lo trabaje con la base de datos que te envie en el link anterior.

Este es el resultado de hacer algunos cambios en la macro
y ahora te explico porque no funciona la macro contigo, en los dos últimos archivos hay espacios en blanco adiciones al final del renglón y la macro lo interpreto como que la palabra compra o venta era parte del concatenado de la razón social y por eso corría las columnas, en la macro original entra y quita los espacios en blanco de las ultimas dos filas de la columna asuntos y te la pondrá como es mira este otro ejemplo la línea vertical (al lado del 6337.74) representa un espacio vacío simplemente quítalo
y esta es la macro adaptada a tu ejemplo, le puse una instrucción para que en automático quite los espacios en blanco y ya en automático te elimine el problema
Option Base 1 Sub SEPARAR_DATOS() Set datos = Range("a1").CurrentRegion With datos filas = .Rows.Count columnas = .Columns.Count Set resultado = .Columns(columnas + 1).Resize(filas, 5) For i = 2 To filas dato = Trim(.Cells(i, 2)) matriz = resultado.Rows(i) separa = Split(dato, " ") cuenta = UBound(separa) cuenta2 = cuenta - 3 matriz(1, 1) = separa(0) matriz(1, 3) = separa(cuenta - 2) matriz(1, 4) = separa(cuenta - 1) matriz(1, 5) = separa(cuenta) texto = Empty For j = 1 To cuenta2 If j = 1 Then texto = separa(j) If j > 1 Then texto = texto & " " & separa(j) Next j matriz(1, 2) = texto Range(resultado.Rows(i).Address) = matriz Next i End With erase matriz Set datos = Nothing End Sub
- Compartir respuesta


[Hola Diana. En este caso lo recomendable es la grabadora y que lo hagas tu misma. Te explico paso a paso por teléfono cuando podamos.

Hola Carlos la idea es generar una macro para optimizar, porque este paso se realiza a diario con diferentes bases de clientes, entonces todos los días no es la misma base de datos. Gracias

Entiendo, y por eso con más motivo creo que es mejor que la generes tu desde tu computadora, yo te guiaré, no te preocupes.
Prueba la macro de James Bond y si no es lo que necesitas, lo hacemos así, ¿Te parece?

Revise la macro de James Bond pero me genero un error. La ejecute desde la creación del boton 3 que esta ubicado en la HOJA 1 y es para que funcione en la HOJA 2 llamada BASE DE DATOS

Creo el botón numero 3 y me genera este error al colocarle Call SEPARAR DATOS. Y no se crear el modulo para ingresar el codigo. Ayuda

Habia creado un boton en controles de formulario por error, entonces lo borre y me quede ahi el modulo. Le doy doble click al modulo y me genera la sgte imagen

Ingrese el código de James Bond de la sgte manera en el MODULO 1
Pero al darle clikc al boton 3 no me ejecuta nada

Hola de esta manera si me funciono, pero tengo una inquietud, es que dos filas de la base de datos no me quedaron ordenadas.

Hola Carlos, James Bond descubrio el error que tenia la base de datos y me envio una nueva macro . La cual me genera el sgte error, esto seria lo ultimo para continuar con el Paso 4, ya estamos finalizando.

Bueno Carlos, voy a generar la pregunta para el PASO 4 para ir adelantando, ya que este paso es un poco mas sencillo.
- Compartir respuesta
