tổng hợp các files excel thành 1

Liên hệ QC

ducngoc.kpmg

Thành viên mới
Tham gia
24/6/19
Bài viết
8
Được thích
0
Dear anh/chị/em

em có báo cáo 3 công ty A, B,C. em tổng hợp thành file consols theo chiều dọc. nhưng e chỉ lấy được dữ liệu của 1 trong 3 công ty trên qua file consols. anh chị em GPE giúp em VBA bị lỗi gì nhé. data: https://drive.google.com/file/d/1go9i1HivQjtNQDuj9aqmLw4Trdw9_OM0/view?usp=sharing

và nếu e muốn tổng hợp data theo chiều ngang thì câu lệnh thế nào ạ

thanks anh chị
 

File đính kèm

  • A.xlsx
    25.6 KB · Đọc: 6
  • B.xlsx
    25.6 KB · Đọc: 6
  • C.xlsx
    25.6 KB · Đọc: 5
  • Consols.xlsm
    36.1 KB · Đọc: 9
Dear anh/chị/em

em có báo cáo 3 công ty A, B,C. em tổng hợp thành file consols theo chiều dọc. nhưng e chỉ lấy được dữ liệu của 1 trong 3 công ty trên qua file consols. anh chị em GPE giúp em VBA bị lỗi gì nhé. data: https://drive.google.com/file/d/1go9i1HivQjtNQDuj9aqmLw4Trdw9_OM0/view?usp=sharing

và nếu e muốn tổng hợp data theo chiều ngang thì câu lệnh thế nào ạ

Cảm ơn anh chị
Thử sửa lại code thế này xem sao.
Mã:
Sub tonghop_excel()
    Dim FilesToOpen
    Dim wb As Workbook
    Dim x As Long, lr As Long
      
    Application.ScreenUpdating = False
    
    FilesToOpen = Application.GetOpenFilename( _
        FileFilter:="Microsoft Excel Files (*.xlsx),*.xlsx", MultiSelect:=True, _
        Title:="LDN:Select Excel File")
        
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "LDN:No excel files selected"
        Exit Sub
    End If
        
    x = 1
    While x <= UBound(FilesToOpen)
        Set wb = Workbooks.Open(Filename:=FilesToOpen(x))
        
        If x = 1 Then
            wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets(1).Range("A1")
                
        Else
            lr = ThisWorkbook.Sheets(1).UsedRange.Columns.Count
            wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets(1).Cells(1, lr + 2)
        End If
        wb.Close False
        x = x + 1
    Wend
    Application.ScreenUpdating = True
    
End Sub
 
Upvote 0
Code nào cũng copy được hết đó chứ, nhưng chịu khó scroll xuống tới dòng 6, 7 trăm mới thấy :)
 
Upvote 0
Thử sửa lại code thế này xem sao.
Mã:
Sub tonghop_excel()
    Dim FilesToOpen
    Dim wb As Workbook
    Dim x As Long, lr As Long
     
    Application.ScreenUpdating = False
   
    FilesToOpen = Application.GetOpenFilename( _
        FileFilter:="Microsoft Excel Files (*.xlsx),*.xlsx", MultiSelect:=True, _
        Title:="LDN:Select Excel File")
       
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "LDN:No excel files selected"
        Exit Sub
    End If
       
    x = 1
    While x <= UBound(FilesToOpen)
        Set wb = Workbooks.Open(Filename:=FilesToOpen(x))
       
        If x = 1 Then
            wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets(1).Range("A1")
               
        Else
            lr = ThisWorkbook.Sheets(1).UsedRange.Columns.Count
            wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets(1).Cells(1, lr + 2)
        End If
        wb.Close False
        x = x + 1
    Wend
    Application.ScreenUpdating = True
   
End Sub


em bị vấn đề này khi tổng hợp theo hàng dọc ak anh.anh xem qua cho em nhé:

em có báo cáo 3 công ty A, B,C. em tổng hợp thành file consols theo chiều dọc. nhưng e chỉ lấy được dữ liệu của 1 trong 3 công ty trên qua file consols. anh chị em GPE giúp em VBA bị lỗi gì nhé
 
Upvote 0
em bị vấn đề này khi tổng hợp theo hàng dọc ak anh.anh xem qua cho em nhé:

em có báo cáo 3 công ty A, B,C. em tổng hợp thành file consols theo chiều dọc. nhưng e chỉ lấy được dữ liệu của 1 trong 3 công ty trên qua file consols. anh chị em GPE giúp em VBA bị lỗi gì nhé
Nó lấy đầy đủ mà bạn, bạn chọn xong 3 file đó, khi thực hiện xong bạn kéo xuống phía dưới sẽ thấy dữ liệu nằm múc chỉ phía dưới. Do file A của bạn nó có dữ liệu trống phía dưới.
 
Upvote 0
Nó lấy đầy đủ mà bạn, bạn chọn xong 3 file đó, khi thực hiện xong bạn kéo xuống phía dưới sẽ thấy dữ liệu nằm múc chỉ phía dưới. Do file A của bạn nó có dữ liệu trống phía dưới.
em thấy file A dữ liệu trống phía dưới mà ta. vậy e phải chỉnh file A thế nào ạ.
 
Upvote 0
Chỉnh đơn giản, file consols.xlsm: Ctrl-A, delete, xong ;)
Hì hì, sorry, chỉ dại.
 
Upvote 0
Nó lấy đầy đủ mà bạn, bạn chọn xong 3 file đó, khi thực hiện xong bạn kéo xuống phía dưới sẽ thấy dữ liệu nằm múc chỉ phía dưới. Do file A của bạn nó có dữ liệu trống phía dưới.
Cám ơn anh nhiều. Nhưng em lại gặp trục trặc ở trường hợp mỗi công ty nhiều sheet. ví dụ mỗi cty gồm 2 sheet là BS và PL. khi e consols thì nó chỉ gộp được sheet PL . em muốn gộp từng sheet riêng rẽ ở môi file thì câu lệnh thế nào ạ.
 

File đính kèm

  • A.xlsx
    28.2 KB · Đọc: 2
  • C.xlsx
    27.6 KB · Đọc: 1
  • B.xlsx
    27.7 KB · Đọc: 1
  • Consols.xlsm
    41.4 KB · Đọc: 2
Upvote 0
anh chị em GPE xem giúp em trường hợp này. mỗi cty A1, B1, C1 có 2 sheet BS, PL . em muốn gọp báo cáo theo từng sheet BS, PL tại file consols. Nhưng khi gộp chỉ gộp được 1 sheet PL ở các công ty con. em muốn gộp riêng từng sheet sheet Bs or PL ở file consols thì câu lệnh thế nào ạ.

cám ơn anh chị em GPE
 

File đính kèm

  • A1.xlsx
    28.2 KB · Đọc: 1
  • B1.xlsx
    27.7 KB · Đọc: 1
  • C1.xlsx
    27.6 KB · Đọc: 1
  • Consols.xlsm
    41.4 KB · Đọc: 1
Upvote 0
Web KT
Back
Top Bottom