Hỏi cách gộp các file excel từ nhiều Sheet khác nhau vào 1 Sheet

Liên hệ QC
xin chao cac ban! cac ban cho tui hoi tý
các ban gộp sheet thực hiên excel 2007 hay 2003??????????hĩ. sao tui thực hien tren 2007 lai ko dc. ai lam 2007 oy giup tui voi. tui mo excel chứa các sheet muốn gộp mà khi ấn alt-f11 lai ko ra gi ka.
 
Chao moi nguoi minh la thanh vien moi . mình muon gop cac sheet trong file kem thanh 1 sheet tong hop ( tieu đe tu dong A1 den dong A3 van giu , va dong cuoi cung ngay thang nam va nguoi lap bang van giu ) . khi minh chinh sua 1 trong cac sheet thi sheet tong hop se tu dong cap nhat . Ai giup minh voi
 

File đính kèm

  • bang tong hop thiet bi.xls
    177 KB · Đọc: 27
Xin chào các anh chị diễn đàn.
Em có 1 file dữ liệu cho từng này và muốn tổng hợp dữ liệu vào sheet "Summary".
Em có thử dử dụng cách bên trên nhưng không hiệu quả đối với file này, nhờ các anh chị cho em lời khuyên.

File của em muốn lấy dữ liệu từ ô E6 (cột số PO) tới hết dữ liệu cuối cùng của cột R (Thòi gian (phút)).
Sau đó dán vào sheet "Summary" từ cột D.

Nhờ các anh chị giúp đỡ (xin lỗi vì file em hơi nặng).
Em cám ơn.
 

File đính kèm

  • BẢNG THỐNG KÊ IN - OFFSET (09.2017).xlsx
    669.3 KB · Đọc: 68
Xin chào các anh chị diễn đàn.
Em có 1 file dữ liệu cho từng này và muốn tổng hợp dữ liệu vào sheet "Summary".
Em có thử dử dụng cách bên trên nhưng không hiệu quả đối với file này, nhờ các anh chị cho em lời khuyên.

File của em muốn lấy dữ liệu từ ô E6 (cột số PO) tới hết dữ liệu cuối cùng của cột R (Thòi gian (phút)).
Sau đó dán vào sheet "Summary" từ cột D.

Nhờ các anh chị giúp đỡ (xin lỗi vì file em hơi nặng).
Em cám ơn.
Dùng code sau nhé:

Mã:
Sub LayDL_HLMT()
    Dim cn As Object
    Dim strField, strSQL As String
    Dim i  As Integer
    Set cn = CreateObject("ADODB.Connection")
    For i = 1 To 14
        strField = strField & "," & IIf(i > 1, " val(F" & i & ")", "F1")
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 31
        strSQL = strSQL & " union all select " & strField & " from [" & Format(i, "00$") & "E6:R] where F1 is not null"
        
    Next
    strSQL = Right(strSQL, Len(strSQL) - 10)
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"";"
    Sheet33.Range("D6").CopyFromRecordset cn.Execute(strSQL)
  
End Sub
 
Dùng code sau nhé:

Mã:
Sub LayDL_HLMT()
    Dim cn As Object
    Dim strField, strSQL As String
    Dim i  As Integer
    Set cn = CreateObject("ADODB.Connection")
    For i = 1 To 14
        strField = strField & "," & IIf(i > 1, " val(F" & i & ")", "F1")
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 31
        strSQL = strSQL & " union all select " & strField & " from [" & Format(i, "00$") & "E6:R] where F1 is not null"
       
    Next
    strSQL = Right(strSQL, Len(strSQL) - 10)
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"";"
    Sheet33.Range("D6").CopyFromRecordset cn.Execute(strSQL)
 
End Sub
Dạ em xin cám ơn rất nhiều.
 
chào các bác. Trong file của em muốn gộp các sheet vào sheet (GOP) trong đó giá trị lấy từ cột A3 của các sheet đến hết đặt vào cột B của sheet (GOP). Cột A của sheet (GOP) là để giá trị tên của các sheet mình lấy giá trị. Các bác hướng dẫn em cách làm với ạ. Em cảm ơn.
 

File đính kèm

  • T00_gammaTN_pho.xlsx
    682.7 KB · Đọc: 7
các tiền bối giúp em với. :(((((((
 
chào các bác. Trong file của em muốn gộp các sheet vào sheet (GOP) trong đó giá trị lấy từ cột A3 của các sheet đến hết đặt vào cột B của sheet (GOP). Cột A của sheet (GOP) là để giá trị tên của các sheet mình lấy giá trị. Các bác hướng dẫn em cách làm với ạ. Em cảm ơn.
Như thế này hả bạn?
 

File đính kèm

  • T00_gammaTN_pho.xlsm
    693 KB · Đọc: 40
Mình cũng có vấn đề tương tự. Giả sử mình có file đính kèm đây, trong đó sheet 1 và sheet 2 là dữ liệu khác nhau, nhưng cùng tên cột. Giờ mình muốn tổng hợp 2 sheet trên vào sheet 3 (gọi là sheet tổng hợp), trong đó lần lượt là thông tin của sheet 1 rồi đến sheet 2. Mình muốn sau này nếu có thay đổi thông tin trên sheet 1 hay sheet 2 thì thông tin trên sheet 3 tự động thay đổi. Hoặc nếu sheet 1 hoặc 2 thêm/bớt dòng thì việc đó cũng được tự động thay đổi ở sheet tổng hợp. Mình biết các bạn ở trên dùng code. Tuy nhiên, nếu dùng code, khi mở file, thường có thông báo macro. Liệu có cách nào không dùng code mà vẫn xử lý được các tình huống trên không, vì bên mình mọi người hay lo ngại khi thấy macro. Xin các bạn chỉ giáo. Mình cám ơn rất nhiều.
 

File đính kèm

  • Consolidate sheets into one.xlsx
    11.7 KB · Đọc: 11
Hi mọi người,

Em có dùng code của anh Hai lúa miền tây.
Em có thay đổi 1 chút để phù hợp với file của em, nhưng mà nó báo lỗi. Em lại k rành cái này lắm.
Kính mong mọi người giúp đỡ.
Tiện thể giúp em, ở mỗi sheet em lấy thêm dữ liệu ở B7 và I7 với ạ.
Cám ơn mọi người
 

File đính kèm

  • inv 1~26(apr).xlsm
    1.1 MB · Đọc: 20
Hi mọi người,

Em có dùng code của anh Hai lúa miền tây.
Em có thay đổi 1 chút để phù hợp với file của em, nhưng mà nó báo lỗi. Em lại k rành cái này lắm.
Kính mong mọi người giúp đỡ.
Tiện thể giúp em, ở mỗi sheet em lấy thêm dữ liệu ở B7 và I7 với ạ.
Cám ơn mọi người
Bạn thử chỉnh code lại như sau nhé.

Mã:
Sub LayDL_HLMT()
    Dim strField, strSQL As String
    Dim i  As Integer
    For i = 1 To 11
        strField = strField & "," & "F" & i
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 26
        strSQL = strSQL & " union all select " & strField & " from [" & i & "$a18:k] where F9 is not null"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"";"
        Sheet15.Range("a3").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 10))
    End With
End Sub
 
Bạn thử chỉnh code lại như sau nhé.

Mã:
Sub LayDL_HLMT()
    Dim strField, strSQL As String
    Dim i  As Integer
    For i = 1 To 11
        strField = strField & "," & "F" & i
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 26
        strSQL = strSQL & " union all select " & strField & " from [" & i & "$a18:k] where F9 is not null"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"";"
        Sheet15.Range("a3").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 10))
    End With
End Sub
Em có cho chạy thử, nhưng dữ liệu cột B chỗ có chỗ k và nó chỉ lấy đc 1 vài sheet thôi ạ
 
Em hiểu nhầm ý.
Đúng là cái file em gửi lên đấy ạ.
 
Lần chỉnh sửa cuối:
Em hiểu nhầm ý.
Đúng là cái file em gửi lên đấy ạ.
Tôi chỉnh lại như sau:

Mã:
Sub LayDL_HLMT()
    Dim strField, strSQL As String
    Dim i  As Integer
    For i = 1 To 11
        strField = strField & "," & "F" & i
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 26
        strSQL = strSQL & " union all select " & strField & " from [" & i & "$a18:k] where F5 is not null and F7>0"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
        Sheet14.Range("a3").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 10))
    End With
End Sub
 
Tôi chỉnh lại như sau:

Mã:
Sub LayDL_HLMT()
    Dim strField, strSQL As String
    Dim i  As Integer
    For i = 1 To 11
        strField = strField & "," & "F" & i
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 26
        strSQL = strSQL & " union all select " & strField & " from [" & i & "$a18:k] where F5 is not null and F7>0"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
        Sheet14.Range("a3").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 10))
    End With
End Sub
Dạ, đúng rồi ạ. Em cảm ơn nhiều!
Nếu được ,bác làm thêm giúp em, ở mỗi sheet lấy thêm ô B7 và I7 sau cột USD
Thật sự là vì công thức này em k hiểu được, nên k sửa đc
 
Dạ, đúng rồi ạ. Em cảm ơn nhiều!
Nếu được ,bác làm thêm giúp em, ở mỗi sheet lấy thêm ô B7 và I7 sau cột USD
Thật sự là vì công thức này em k hiểu được, nên k sửa đc
Tôi chỉ có thể làm được như sau:

Mã:
Sub LayDL_HLMT()
    Dim strField, strSQL As String
    Dim i  As Integer
    For i = 1 To 11
        strField = strField & "," & "F" & i
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 26
        strSQL = strSQL & " union all select " & strField & ",(Select F1 & ' - ' & F8 from [" & i & "$B7:I7]) from [" & i & "$a18:k] where F5 is not null and F7>0"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
        Sheet14.Range("a3").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 10))
    End With
End Sub
 
Tôi chỉ có thể làm được như sau:

Mã:
Sub LayDL_HLMT()
    Dim strField, strSQL As String
    Dim i  As Integer
    For i = 1 To 11
        strField = strField & "," & "F" & i
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 26
        strSQL = strSQL & " union all select " & strField & ",(Select F1 & ' - ' & F8 from [" & i & "$B7:I7]) from [" & i & "$a18:k] where F5 is not null and F7>0"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
        Sheet14.Range("a3").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 10))
    End With
End Sub
Vậy là cũng tốt rồi, chân thành cảm ơn bác nhiều!
 
Vậy là cũng tốt rồi, chân thành cảm ơn bác nhiều!
Lở rồi làm luôn cho bạn:
Mã:
Sub LayDL_HLMT()
    Dim strField, strSQL As String
    Dim i  As Integer
    For i = 1 To 11
        strField = strField & "," & "F" & i
    Next
    strField = Right(strField, Len(strField) - 1)
    For i = 1 To 26
        strSQL = strSQL & " union all select " & strField & ", (Select F1 from [" & i & "$B7:I7]), (Select F8 from [" & i & "$B7:I7])  from [" & i & "$a18:k] where F5 is not null and F7>0"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
        Sheet14.Range("a3").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 10))
    End With
End Sub
 
Web KT
Back
Top Bottom