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

ducngoc.kpmg

Thành viên mới
Tham gia ngày
24 Tháng sáu 2019
Bài viết
7
Được thích
0
Điểm
13
Tuổi
28
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ị
 

File đính kèm

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,760
Được thích
3,989
Điểm
860
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
 

ThangCuAnh

Mới rờ Ét xeo
Tham gia ngày
1 Tháng mười hai 2017
Bài viết
825
Được thích
654
Điểm
360
Nơi ở
Phờ lây cu
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 :)
 

ducngoc.kpmg

Thành viên mới
Tham gia ngày
24 Tháng sáu 2019
Bài viết
7
Được thích
0
Điểm
13
Tuổi
28
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é
 

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,760
Được thích
3,989
Điểm
860
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.
 

ducngoc.kpmg

Thành viên mới
Tham gia ngày
24 Tháng sáu 2019
Bài viết
7
Được thích
0
Điểm
13
Tuổi
28
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 ạ.
 

ThangCuAnh

Mới rờ Ét xeo
Tham gia ngày
1 Tháng mười hai 2017
Bài viết
825
Được thích
654
Điểm
360
Nơi ở
Phờ lây cu
Chỉnh đơn giản, file consols.xlsm: Ctrl-A, delete, xong ;)
Hì hì, sorry, chỉ dại.
 

ducngoc.kpmg

Thành viên mới
Tham gia ngày
24 Tháng sáu 2019
Bài viết
7
Được thích
0
Điểm
13
Tuổi
28
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

ducngoc.kpmg

Thành viên mới
Tham gia ngày
24 Tháng sáu 2019
Bài viết
7
Được thích
0
Điểm
13
Tuổi
28
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

Top Bottom