Gộp dữ liệu từ nhiều Sheets vào một Sheet

Liên hệ QC

trai ho mo

Thành viên mới
Tham gia
29/10/12
Bài viết
21
Được thích
5
Chào các Bác,

Xin vui lòng giúp dùm cách để gộp danh sách học sinh các lớp từ C1-C10 vào sheet " tong hop".
Cám ơn.
 

File đính kèm

Chào các Bác,

Xin vui lòng giúp dùm cách để gộp danh sách học sinh các lớp từ C1-C10 vào sheet " tong hop".
Cám ơn.
Dữ liệu đưa lên nhờ làm phải như bạn thì người giúp như tôi mới thấy hứng thú để làm. Dữ liệu chuẩn, dư đủ để test.
 
Chào các Bác,

Xin vui lòng giúp dùm cách để gộp danh sách học sinh các lớp từ C1-C10 vào sheet " tong hop".
Cám ơn.
Thử code này
Mã:
Option Explicit
Sub abc()
Dim ws As Worksheet, iR&
For Each ws In Worksheets
    iR = Sheets("tong hop").Range("E" & Rows.Count).End(3).Row + 1
    If ws.Name Like "C*" Then
        ws.Range("A6:A" & ws.Range("E5").End(4).Row).Resize(, 9).Copy Sheets("tong hop").Range("A" & iR)
    End If
Next
End Sub
 
Chào các Bác,

Xin vui lòng giúp dùm cách để gộp danh sách học sinh các lớp từ C1-C10 vào sheet " tong hop".
Cám ơn.
1/ Cái này theo tôi thì nên để dữ liệu các lớp trong 1 sheet tong hop, muốn tách các lớp ra thì dựa vào cột D thì sẽ thuận tiện hơn là bạn theo dõi mỗi lớp 1 sheet rồi gộp lại, bạn có thể theo dõi tất cả các lớp khác nữa. Không lẽ mỗi nhóm lớp bạn lại theo dõi 1 File.
2/ Nếu đồng ý hướng này thì tôi làm cho.
 
Chào các Bác,

Xin vui lòng giúp dùm cách để gộp danh sách học sinh các lớp từ C1-C10 vào sheet " tong hop".
Cám ơn.
Bạn thử:

Mã:
Sub Test()
    Dim ws, sh As Worksheet, LR As Long
    Set sh = Worksheets("tong hop")
    For Each ws In Worksheets
        LR = sh.Cells(Rows.Count, 1).End(xlUp).Row
        If ws.Name <> "tong hop" Then
            ws.Activate
            ws.Range("a6:i52").Copy
            sh.Cells(LR, 1).Offset(1).PasteSpecial Paste:=xlPasteValues
        End If
    Next
    Application.CutCopyMode = False
    Worksheets("tong hop").Activate
End Sub
 
1/ Cái này theo tôi thì nên để dữ liệu các lớp trong 1 sheet tong hop, muốn tách các lớp ra thì dựa vào cột D thì sẽ thuận tiện hơn là bạn theo dõi mỗi lớp 1 sheet rồi gộp lại, bạn có thể theo dõi tất cả các lớp khác nữa. Không lẽ mỗi nhóm lớp bạn lại theo dõi 1 File.
2/ Nếu đồng ý hướng này thì tôi làm cho.
Vậy cũng hay. Nhờ be_09 giúp nhé. Cảm ơn
 
Tôi làm theo cách lấy DS hết vào mảng rồi tạo 1 vùng đủ rộng ở sheet tong hop để ghi vào đó. Bạn xem file.
 

File đính kèm

1/ Sửa lại code và bổ sung sheet lọc lớp cho bạn thuận tiện chọn lớp. Bạn chọn 1 lớp tại N2 của sheet DS_Lop rồi nhấn nút.
2/ Bạn vào sheet Trang chủ nhấn tên nút để nhận kết quả theo nội dung tên nút.
 

File đính kèm

Kể ra mà mỗi lớp để thành 1 file riêng. Dữ liệu cũng sẽ nhẹ nhàng bớt
Rồi một File tổng hợp riêng, cập nhật dữ liệu từ các File lớp.
 
Xin phép góp vui.
PHP:
Sub CombineData()
    Dim cnn As Object, Rst As Object
    Dim strQuery As String
    Dim Ws As Worksheet, FirstWs As Boolean, Header As Range
    
    FirstWs = True
    For Each Ws In ThisWorkbook.Sheets
        If Ws.Name Like "C*" Then
            If FirstWs Then
                Set Header = Ws.Range("A1:I5")
                strQuery = _
                        "SELECT " & _
                                " * " & _
                        "FROM " & _
                                " [" & Ws.Name & "$A6:I100] " & _
                        "WHERE " & _
                                " F6 IS NOT NULL "
            Else
                strQuery = strQuery & _
                        "UNION ALL " & _
                        "SELECT " & _
                                " * " & _
                        "FROM " & _
                                " [" & Ws.Name & "$A6:I100] " & _
                        "WHERE " & _
                                " F6 IS NOT NULL "
            End If
            FirstWs = False
        End If
    Next Ws
    
    Set cnn = CreateObject("ADODB.Connection")
    Set Rst = CreateObject("ADODB.Recordset")
    
    With cnn
        .connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0" & _
                            ";Data Source=" & ThisWorkbook.FullName & _
                            ";Extended Properties='Excel 12.0 Xml;HDR=No';"
        .Open
    End With
    
    Set Rst = cnn.Execute(strQuery)
    
    Sheet16.UsedRange.Clear
    With Sheet16.Range("A6")
        .CopyFromRecordset Rst
        .CurrentRegion.Borders.LineStyle = 1
        .CurrentRegion.Borders(xlInsideHorizontal).Weight = xlHairline
        .CurrentRegion.Offset(, 4).Resize(, 2).Borders(xlInsideVertical).LineStyle = 0
    End With
    Header.Copy Sheet16.Range("A1")
    Sheet16.Range("A6").CurrentRegion.EntireColumn.AutoFit
    
    cnn.Close
    Set cnn = Nothing: Set Rst = Nothing: Set Header = Nothing
End Sub
 
Chập bằng Power Query được không bạn,
Bạn xem coi đúng ý chưa
 

File đính kèm

Web KT

Bài viết mới nhất

Back
Top Bottom