Como hacer una macro para obtener una Lista?

Me pueden ayudar por favor para resolver lo siguiente por medio de una macro por favor
Para crear la lista debe de que comparar la columna D y F de la hoja de "ListaDeMovimientos"
Si la columna D5 es = "Realiza Movimiento" y la columna F5 es ="HOJA EXISTENTE"
Entonces manda el concepto de la columna A5 a la columna J8 de la hoja AUXILIAR y asi para
los de mas conceptos de esa hoja "ListaDeMovimientos".

Aquí esta un ejercicio:

https://github.com/angtor/lista

Respuesta
1

Este es el resultado de la macro primero filtra todos los valores realiza movimientos que tengan hoja existente, una vez filtrado selecciona todos los datos de la columna A

y de ahí los copia a la hoja2 a partir de la celda j8, si esta celda ya tiene datos entonces hará la copia al final de la ultima fila con datos

y esta es la macro

Sub compara_listas()
Set hl = Worksheets("ListaDeMovimientos")
Set datos = hl.Range("a3").CurrentRegion
With datos
    filas = .Rows.Count
    col = .Columns.Count
    Set datos = .Cells(2, 4).Resize(filas - 1, 3)
    .AutoFilter 1, "realiza movimiento"
    .AutoFilter 3, "HOJA EXISTENTE"
    .Offset(1, -3).Columns(1).Copy
    filas2 = Sheets("auxiliar").Range("j8").CurrentRegion.Rows.Count
    If filas2 = 1 Then Sheets("auxiliar").Range("j8").PasteSpecial xlValues
    If filas2 > 1 Then Sheets("auxiliar").Range("j8").Rows(filas2 + 1).PasteSpecial xlValues
End With
Set datos = Nothing
End Sub

otra duda espero que me la puedas resolver :( .........

Como puedo resolver que esa lista que se generó en la hoja AUXILIAR, compare con los conceptos de la columna D, de la misma hoja.

y  que me mande su información respectiva de las columnas (A,B,C,D,E,F,G) a sus hojas ya existentes, por ejemplo CEMENTOS Y CONCRETOS NACIONALES S.A DE C.V, su información correspondiente de las columnas mencionadas se vaya a su hoja ya creada que se llama CEMENTOS y se agregue en la fila A9 y así con las de más hojas , en las otras hojas varia la fila  

La duda con la cual inicio este tema ya fue solucionada, por tanto esta pregunta es tema nuevo razón por la cual debes de abrir una nueva consulta eso por un lado por el otro lo que pides es fácil, solo quedan unas dudas,

1.- ¿Si no existe la hoja por ejemplo GKN DRIVELINE CELAYA SA DE CV que pasaría o más bien que quieres que pase?

2.- ¿Hacer esta macro es fácil el único problema es que tienes varias filas con el mismo nombre por ejemplo GKN DRIVELINE CELAYA SA DE CV tiene 5 cual de las filas quieres que copie?, ¿O quieres que las copie todas?

3.- Tienes un problema porque dentro de los nombres repetidos GKN DRIVELINE CELAYA SA DE CV también tienes GKN DRIVELINE CELAYA SA DE C.V o GKN DRIVELINE CELAYA S.A DE CV esto dificulta la programación tienes que tener el nombre estandarizado

4.- Y por ultimo el nombre de la hoja y el nombre la fila tienen que ser iguales para el caso de GKN DRIVELINE CELAYA SA DE CV solo lo tienes como GKN y esto también complica la programación, es más sencillo como dije si la hoja se llamara igual que la fila.

Responde estas preguntas en una nueva consulta y veré que se puede hacer

2 respuestas más de otros expertos

Respuesta
1

Revisando su archivo, le recomendaría usar una fórmula para traer el dato y quizá no sea necesario una macro desde mi punto de vista ya que se trata de un AUXILIAR propiamente dicho y por sus características podría funcionar muy bien la fórmula, por otro lado si la información que se registra en la hoja ListaDeMovimientos se realiza mediante un formulario de captura podría desde ahí agregar una macro para poner el dato necesario en la hoja AUXILIAR. Me gustaría saber un poco más del llenado de la información o en que momento se desea agregar el dato en la columna J de la hoja AUXILIAR para poder ayudarle un poco más.

Respuesta
1

No pude descargar tu archivo je je

Pero aquí te dejo un link de descarga directa haz click aqui y debajo la macro que cree para que haga lo que dices...

Sub Compara()
Dim uF
Set h1 = Sheets("ListaDeMovimientos")
Set H2 = Sheets("AUXILIAR")
uF = h1.Range("F" & Rows.Count).End(xlUp).Row
y = 8
For i = 5 To uF
    If h1.Cells(i, 4).Value = "Realiza Movimiento" And h1.Cells(i, 6).Value = "HOJA EXISTENTE" Then
        H2.Cells(y, 10).Value = h1.Cells(i, 1).Value
        y = y + 1
    End If
Next i
MsgBox "Datos copiados con exito", vbInformation, "Informacion de carga de datos"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas