Tengo que combinar múltiples sobresalir en un solo libro de Excel. Supongamos que tengo 3 hojas de excel.
ExcelA.xls - contiene 3 columnas A, B, C
ExcelB.xls - contiene 4 columnas B, D, E, F
ExcelC.xls - contiene 3 columnas A, C, D
Ahora mi ExcelFinal.xls debe contener como A, B, C, D, E, F siempre, la asignación de datos contra las columnas siempre debe estar intacta. Además, el nombre de la columna no debe repetirse en filas. Necesitamos lograr esto usando el script VB.
¡La ayuda rápida será muy apreciada!
¡Gracias! Alok
Respuestas
0 para la respuesta № 1Sub CopyData()
Dim sourceColumn As Range, targetColumn As Range
Dim columnValues, sourceWorksheet, sourceWorkbook, targetWorkheet, targetWorkbook As String
Dim currentWorkbook, templateWorksheet, reference As String
sourceWorkbook = "Data.xlsx"
sourceWorksheet = "data"
targetWorkbook = "DynamicColumnsTemplate.xlsm"
targetWorkheet = "data"
templateWorksheet = "template"
" For 1st column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "A4"
columnValues = Range(reference).value
If columnValues <> " " Then
Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("A")
sourceColumn.Copy Destination:=targetColumn
End If
" For 2nd column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "B4"
columnValues = Range(reference).value
If columnValues <> " " Then
Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("B")
sourceColumn.Copy Destination:=targetColumn
End If
" For 3rd column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "C4"
columnValues = Range(reference).value
If columnValues <> " " Then
Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("C")
sourceColumn.Copy Destination:=targetColumn
End If
" For 4th column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "D4"
columnValues = Range(reference).value
If columnValues <> " " Then
Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("D")
sourceColumn.Copy Destination:=targetColumn
End If
" For 5th column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "E4"
columnValues = Range(reference).value
If columnValues <> " " Then
Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("E")
sourceColumn.Copy Destination:=targetColumn
End If
End Sub