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

Respuesta
3

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.

Adjunto imagen inicial

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.

Si claro como subo el archivo a la nube? Que pena la ignorancia

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
Respuesta
1

[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

Debes colocar el código en un módulo, y en el botón pones Call SEPARAR_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

En la imagen te veo un módulo creado. Has doble clic en el y captura una imagen

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

Pues borra lo que tiene el módulo, y pega la macro de James Bond y pruebas

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

En el módulo, justo debajo de  Sub SEPARAR_DATOS, coloca                                                Sheets("BASE DE DATOS").Activate                                                                                                                  y pruebas

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

Adjunto imagen inicial

[Hola Diana.

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.

[Hola Diana. Este caso mejor que te lo solucione el. Yo con este tema no puedo ayudarte.

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

Ok Diana, ahora voy a salir, luego la veo, o coloca la pregunta en general, así tienes más opciones de ayuda.

Hola Carlos ya genera la nueva pregunta para el PASO 4

Vale, seguimos en la otra

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas