Comparar dos archivos de Excel usando una macro de VBA.
SaidB22
Mensajes publicados
2
Estado
Miembro
-
ThauTheme Mensajes publicados 1564 Estado Miembro -
ThauTheme Mensajes publicados 1564 Estado Miembro -
Hola,
Siendo novato en el lenguaje VBA, me gustaría saber si alguien entre ustedes podría ayudarme a implementar una macro que me permita comparar dos columnas en dos archivos de Excel distintos y completar otras columnas en el archivo de destino, cuando se cumpla la condición (cuando los valores de las celdas comparadas sean idénticos).
En resumen, me gustaría comparar los valores de la columna B del archivo A con los valores de la columna F del archivo B, si los valores son idénticos, habría que llenar otras columnas en el archivo B basándose en el archivo A.
¡De antemano, gracias por su ayuda!
Siendo novato en el lenguaje VBA, me gustaría saber si alguien entre ustedes podría ayudarme a implementar una macro que me permita comparar dos columnas en dos archivos de Excel distintos y completar otras columnas en el archivo de destino, cuando se cumpla la condición (cuando los valores de las celdas comparadas sean idénticos).
En resumen, me gustaría comparar los valores de la columna B del archivo A con los valores de la columna F del archivo B, si los valores son idénticos, habría que llenar otras columnas en el archivo B basándose en el archivo A.
¡De antemano, gracias por su ayuda!
3 respuestas
Hola Said, hola foro,
Para evitar perder tiempo, te propongo que nos envíes un archivo Excel porque dudo que PhotoChope pueda hacer eso. Y también, más precisión sobre las otras columnas a completar. Tu problema me parece relativamente simple de resolver con el archivo adecuado.
Para enviar un archivo hay muchos sitios de alojamiento de archivos. Por ejemplo: https://www.cjoint.com/
--
Hasta luego,
ThauTheme
Para evitar perder tiempo, te propongo que nos envíes un archivo Excel porque dudo que PhotoChope pueda hacer eso. Y también, más precisión sobre las otras columnas a completar. Tu problema me parece relativamente simple de resolver con el archivo adecuado.
Para enviar un archivo hay muchos sitios de alojamiento de archivos. Por ejemplo: https://www.cjoint.com/
--
Hasta luego,
ThauTheme
Hola @ThauTheme,
Gracias por tu respuesta.
De hecho, me gustaría comparar dos archivos de Excel A y B y realizar algunas manipulaciones cuando se cumpla la condición o no:
1 - Comparamos la columna B del archivo A con la columna F del archivo B, si las celdas son idénticas:
--> Llenamos las columnas verdes del archivo B con los datos correspondientes, contenidos en las columnas verdes del archivo A.
Otra manipulación adicional:
- Si nos damos cuenta de que existen datos en la columna B del archivo A pero no en la columna F del archivo B, agregamos la fila con los datos correspondientes contenidos en las columnas verdes del archivo A.
Aquí está el enlace a los archivos en cuestión: https://www.cjoint.com/c/LBpkdSUlJrz
Gracias por tu respuesta.
De hecho, me gustaría comparar dos archivos de Excel A y B y realizar algunas manipulaciones cuando se cumpla la condición o no:
1 - Comparamos la columna B del archivo A con la columna F del archivo B, si las celdas son idénticas:
--> Llenamos las columnas verdes del archivo B con los datos correspondientes, contenidos en las columnas verdes del archivo A.
Otra manipulación adicional:
- Si nos damos cuenta de que existen datos en la columna B del archivo A pero no en la columna F del archivo B, agregamos la fila con los datos correspondientes contenidos en las columnas verdes del archivo A.
Aquí está el enlace a los archivos en cuestión: https://www.cjoint.com/c/LBpkdSUlJrz
Hola Said, hola el foro,
Si tus dos archivos están abiertos, el código a continuación debe colocarse en el archivo A (que, por lo tanto, se convertirá en Archivo A.xlsm):
Hasta luego,
ThauTheme
Si tus dos archivos están abiertos, el código a continuación debe colocarse en el archivo A (que, por lo tanto, se convertirá en Archivo A.xlsm):
Sub Macro1() Dim CA As Workbook 'declara la variable CA (Libro A) Dim OA As Worksheet 'declara la variable OA (Hoja A) Dim CB As Workbook 'declara la variable CB (Libro B) Dim OB As Worksheet 'declara la variable OB (Hoja B) Dim TVA As Variant 'declara la variable TVA (Tabla de Valores A) Dim TVB As Variant 'declara la variable TVB (Tabla de Valores B) Dim I As Integer 'declara la variable I (Incremento) Dim J As Integer 'declara la variable J (incremento) Dim TEST As Boolean 'declara la variable TEST Dim PLV As Integer 'declara la variable PL (Primera Línea vacía) Set CA = ThisWorkbook 'define el libro CA Set OA = CA.Worksheets("PUBLISHING TEAM Facturación 2") 'define la hoja OA Set CB = Workbooks("Archivo B.xlsx") 'define el libro CB Set OB = CB.Worksheets("Hoja1") 'define la hoja OB TVA = OA.Range("A1").CurrentRegion 'define la tabla de valores TVA TVB = OB.Range("A1").CurrentRegion 'define la tabla de valores TVB For I = 2 To UBound(TVA, 1) 'bucles 1: sobre todas las líneas I de la tabla de valores TVA (a partir de la segunda) TEST = False 'define la variable TEST For J = 2 To UBound(TVB, 1) 'bucles 2: sobre todas las líneas J de la tabla de valores TVB (a partir de la segunda) 'condición: si el texto después del guion de la dato línea I columna 2 de TVA es igual al valor línea J columna 6 de TVB (convertido a texto) If Split(TVA(I, 2), "-")(1) = CStr(TVB(J, 6)) Then OB.Cells(J, 9).Value = TVA(I, 5) 'recupera en la celda línea J columna 9 de la hoja OB el valor de la dato línea I columna 5 de TVA OB.Cells(J, 11).Value = TVA(I, 6) 'recupera en la celda línea J columna 11 de la hoja OB el valor de la dato línea I columna 6 de TVA OB.Cells(J, 13).Value = TVA(I, 7) 'recupera en la celda línea J columna 13 de la hoja OB el valor de la dato línea I columna 6 de TVA TEST = True 'reddefine la variable TEST Exit For 'sale del bucle 2 End If 'fin de la condición If TEST = False Then 'si TEST es [verdadero] (la línea no existe en B) PLV = OB.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'define la primera línea vacía PLV de la columna A de la hoja OB OB.Cells(PLV, 1).Value = TVA(I, 4) 'recupera en la celda línea PLV columna 1 de la hoja OB el valor de la dato línea I columna 4 de TVA OB.Cells(PLV, 6).Value = Split(TVA(I, 2), "-")(1) 'recupera en la celda línea PLV columna 6 de la hoja OB el valor de la dato línea I columna 2 de TVA (después del guion) OB.Cells(PLV, 7).Value = TVA(I, 1) 'recupera en la celda línea PLV columna 7 de la hoja OB el valor de la dato línea I columna 1 de TVA OB.Cells(PLV, 8).Value = TVA(I, 3) 'recupera en la celda línea PLV columna 8 de la hoja OB el valor de la dato línea I columna 3 de TVA OB.Cells(PLV, 9).Value = TVA(I, 5) 'recupera en la celda línea PLV columna 9 de la hoja OB el valor de la dato línea I columna 5 de TVA OB.Cells(PLV, 11).Value = TVA(I, 6) 'recupera en la celda línea PLV columna 11 de la hoja OB el valor de la dato línea I columna 6 de TVA OB.Cells(PLV, 13).Value = TVA(I, 7) 'recupera en la celda línea PLV columna 13 de la hoja OB el valor de la dato línea I columna 7 de TVA Exit For 'sale del bucle 2 End If 'fin de la condición Next J 'siguiente línea del bucle 2 Next I 'siguiente línea del bucle 1 MsgBox "¡Datos procesados!" 'mensaje End Sub Hasta luego,
ThauTheme