Help on merging multiple excel files data
Closed
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
-
Jan 4, 2013 at 11:17 AM
rizvisa1 Posts 4478 Registration date Thursday January 28, 2010 Status Contributor Last seen May 5, 2022 - Jan 8, 2013 at 07:30 PM
rizvisa1 Posts 4478 Registration date Thursday January 28, 2010 Status Contributor Last seen May 5, 2022 - Jan 8, 2013 at 07:30 PM
Related:
- Help on merging multiple excel files data
- How to delete multiple files on mac - Guide
- Transfer data from one excel worksheet to another automatically - Guide
- Tmobile data check - Guide
- How to open msi files on android - Guide
- Clear recent files windows 11 - Guide
4 responses
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 4, 2013 at 03:23 PM
Jan 4, 2013 at 03:23 PM
You would need a macro for that
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
5
Jan 5, 2013 at 08:53 AM
Jan 5, 2013 at 08:53 AM
how would it be if following are excel file names and headers to be used for this merge process.
Excel file name: abc1, abc2, abc3
(all contains data in sheet1)
data headers (columns): a, b, c, d, e, f, g, h, i, j, k, L
data exist in different number of rows randomly. few files contains data from row2 to row10 and some may contain data from row2 to row90.
need your support to create a sample macro for it.
Excel file name: abc1, abc2, abc3
(all contains data in sheet1)
data headers (columns): a, b, c, d, e, f, g, h, i, j, k, L
data exist in different number of rows randomly. few files contains data from row2 to row10 and some may contain data from row2 to row90.
need your support to create a sample macro for it.
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 5, 2013 at 10:57 AM
Jan 5, 2013 at 10:57 AM
Try this
Option Explicit Sub consolidateIntoOneBook() Dim sourceFolder As String Dim sourceFile As String Dim sourceBook As Workbook Dim sourceSheet As String Dim sourceRows As Long Dim sourceCols As Long Dim TargetBook As Workbook Dim targetSheet As String Dim targetRows As Long Dim maxPossibleRows As Long Dim startRow As Integer sourceSheet = "Sheet1" targetSheet = "Consolidated" sourceFolder = InputBox("Enter the full path where files exists", "Excel Files Path") sourceFolder = Trim(sourceFolder) If Right(sourceFolder, 1) <> "\" Then sourceFolder = sourceFolder & "\" sourceFile = Dir(sourceFolder & "*.xls*") If (sourceFile = vbNullString) Then MsgBox "No *.xls* files found at location [" & sourceFile & "]", vbInformation, "Error" GoTo consolidateIntoOneBook_Exit End If On Error GoTo consolidateIntoOneBook_Err Application.EnableEvents = False Application.ScreenUpdating = False Set TargetBook = Workbooks.Add TargetBook.Sheets("Sheet1").Name = targetSheet maxPossibleRows = TargetBook.Sheets(targetSheet).Rows.Count startRow = 1 targetRows = 0 Do Until sourceFile = vbNullString Set sourceBook = Workbooks.Open(Filename:=sourceFolder & sourceFile) With sourceBook.Sheets(sourceSheet) sourceRows = getItemLocation("*", .Cells) sourceCols = getItemLocation("*", .Cells, bFindRow:=False) If (targetRows + (sourceRows - startRow) + 1 > maxPossibleRows) Then MsgBox "Copying data from workbook [" & sourceFile & "] will exceed excel imposed limitation of " & maxPossibleRows & " rows." GoTo consolidateIntoOneBook_Exit End If Application.CutCopyMode = False .Range(.Cells(startRow, 1), .Cells(sourceRows, sourceCols)).Copy TargetBook.Sheets(targetSheet).Cells(targetRows + 1, 1).PasteSpecial targetRows = targetRows + sourceRows - startRow + 1 Application.CutCopyMode = False startRow = 2 End With sourceBook.Close False sourceFile = Dir() Loop consolidateIntoOneBook_Exit: Application.EnableEvents = True Application.ScreenUpdating = True Exit Sub consolidateIntoOneBook_Err: MsgBox "Error Occured while processing request. " & Err.Description, vbCritical, "Critical Error" GoTo consolidateIntoOneBook_Exit End Sub Public Function getItemLocation(sLookFor As String, _ rngSearch As Range, _ Optional bFullString As Boolean = True, _ Optional bLastOccurance As Boolean = True, _ Optional bFindRow As Boolean = True) As Long 'find the first/last row/column within a range for a specific string Dim Cell As Range Dim iLookAt As Integer Dim iSearchDir As Integer Dim iSearchOdr As Integer If (bFullString) _ Then iLookAt = xlWhole Else iLookAt = xlPart End If If (bLastOccurance) _ Then iSearchDir = xlPrevious Else iSearchDir = xlNext End If If Not (bFindRow) _ Then iSearchOdr = xlByColumns Else iSearchOdr = xlByRows End If With rngSearch If (bLastOccurance) _ Then Set Cell = .Find(sLookFor, .Cells(1, 1), xlValues, iLookAt, iSearchOdr, iSearchDir) Else Set Cell = .Find(sLookFor, .Cells(.Rows.Count, .Columns.Count), xlValues, iLookAt, iSearchOdr, iSearchDir) End If End With If Cell Is Nothing Then getItemLocation = 0 ElseIf Not (bFindRow) _ Then getItemLocation = Cell.Column Else getItemLocation = Cell.Row End If Set Cell = Nothing End Function
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 5, 2013 at 10:59 AM
Jan 5, 2013 at 10:59 AM
Can a mod. restore the msg that seems to be a victim of sanitization
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
5
Jan 8, 2013 at 07:39 AM
Jan 8, 2013 at 07:39 AM
thanks @rizvisa1. can you pls report the message.
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
5
Jan 8, 2013 at 07:39 AM
Jan 8, 2013 at 07:39 AM
sorry its repost message.
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 8, 2013 at 07:30 PM
Jan 8, 2013 at 07:30 PM
thanks Ambucias for restoring the msg