Xin chỉ giúp code để chép dữ liệu từ các sheet vào bảng tổng hợp.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Hoàng Linhbg

Thành viên mới
Tham gia
14/9/23
Bài viết
10
Được thích
4
Nhờ các bác, chú giúp cháu tình huống sau: Cháu đang cần tổng hợp dữ liệu ĐIỂM từ các sheet nam45, nu45, nam123,nu123 và sheet TONGHOP với các cột tương ứng ạ, vì cháu làm cách thông thường mất khoảng 5-7 phút thôi, giờ cháu muốn giúp code từ các bác khi click chạy là song ạ! cháu gửi file sửa lại
 

File đính kèm

  • TH.xls
    58.5 KB · Đọc: 12
Lần chỉnh sửa cuối:
Lý ra sau khi 5 - 7 phút làm tay đó bạn điền kết quả vô 5 dòng của bảng dưới đây thì hay quá!

SttTRUONGNam45Nam123nu123nu45ĐiểmGhi chú
1Th Bảo Đài?????
2Th Bảo Sơn?????
3Th Bắc Lũng?????
4Th Bình Sơn?????
 
Lý ra sau khi 5 - 7 phút làm tay đó bạn điền kết quả vô 5 dòng của bảng dưới đây thì hay quá!

SttTRUONGNam45Nam123nu123nu45ĐiểmGhi chú
1Th Bảo Đài?????
2Th Bảo Sơn?????
3Th Bắc Lũng?????
4Th Bình Sơn?????
Báo cáo bác, kia nó chỉ 1/3 trong số dữ liệu cháu demo lên thôi, dữ liệu thực dài ạ, cháu muốn khi sử lý dữ liệu được các bác hỗ trợ code chạy nó nhanh và chính xác, tránh nhầm lẫn khi làm theo cách thông thường thủ công ạ.
 
Báo cáo bác, kia nó chỉ 1/3 trong số dữ liệu cháu demo lên thôi, dữ liệu thực dài ạ, cháu muốn khi sử lý dữ liệu được các bác hỗ trợ code chạy nó nhanh và chính xác, tránh nhầm lẫn khi làm theo cách thông thường thủ công ạ.
Bác ấy yêu cầu bạn điền kết quả bằng tay là để đối chứng với kết quả code nhằm "chính xác, tránh nhầm lẫn" như bạn đã nói ấy.
 
Với file #1 mình chạy code này thấy cũng êm nè:
PHP:
Sub TongHopDiem()
 Dim Sh As Worksheet, CSDL As Range, Cls As Range, WF As Object
 Dim Rws As Long, Diem As Double, Col As Integer, Tmr As Double
 On Error GoTo LoiCT
 Sheets("Tong Hop").Select:                     Tmr = Timer()
 Set WF = Application.WorksheetFunction
 Application.ScreenUpdating = False
 For Each Cls In Range([B4], [B4].End(xlDown))
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "TONG HOP" Then
            Col = Switch(Sh.Name = "nam45", 3, Sh.Name = "nam123", 4, _
                Sh.Name = "nu45", 6, Sh.Name = "nu123", 5)
            Sh.[Z1].Value = Sh.[C1].Value
            Sh.[z2].Value = Cls.Value
            Rws = Sh.[D1].CurrentRegion.Rows.Count
            Cells(Cls.Row, Col).Value = WF.DSum(Sh.[C1].Resize(Rws, 2), Sh.[D1], Sh.[Z1:Z2])
        End If
    Next Sh
 Next Cls
 Application.ScreenUpdating = True
 [G2].Value = Timer - Tmr
Err_:           Exit Sub
LoiCT:
    If Err = 94 Then
        Resume Next
    Else
        MsgBox Err:         GoTo Err_
    End If
End Sub
 
Với file #1 mình chạy code này thấy cũng êm nè:
PHP:
Sub TongHopDiem()
 Dim Sh As Worksheet, CSDL As Range, Cls As Range, WF As Object
 Dim Rws As Long, Diem As Double, Col As Integer, Tmr As Double
 On Error GoTo LoiCT
 Sheets("Tong Hop").Select:                     Tmr = Timer()
 Set WF = Application.WorksheetFunction
 Application.ScreenUpdating = False
 For Each Cls In Range([B4], [B4].End(xlDown))
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "TONG HOP" Then
            Col = Switch(Sh.Name = "nam45", 3, Sh.Name = "nam123", 4, _
                Sh.Name = "nu45", 6, Sh.Name = "nu123", 5)
            Sh.[Z1].Value = Sh.[C1].Value
            Sh.[z2].Value = Cls.Value
            Rws = Sh.[D1].CurrentRegion.Rows.Count
            Cells(Cls.Row, Col).Value = WF.DSum(Sh.[C1].Resize(Rws, 2), Sh.[D1], Sh.[Z1:Z2])
        End If
    Next Sh
 Next Cls
 Application.ScreenUpdating = True
 [G2].Value = Timer - Tmr
Err_:           Exit Sub
LoiCT:
    If Err = 94 Then
        Resume Next
    Else
        MsgBox Err:         GoTo Err_
    End If
End Sub
Dạ, cháu cám ơn bác. Cháu đi làm giờ mới về nên xem được bài viết trợ giúp của bác.
Bài đã được tự động gộp:

Với file #1 mình chạy code này thấy cũng êm nè:
PHP:
Sub TongHopDiem()
 Dim Sh As Worksheet, CSDL As Range, Cls As Range, WF As Object
 Dim Rws As Long, Diem As Double, Col As Integer, Tmr As Double
 On Error GoTo LoiCT
 Sheets("Tong Hop").Select:                     Tmr = Timer()
 Set WF = Application.WorksheetFunction
 Application.ScreenUpdating = False
 For Each Cls In Range([B4], [B4].End(xlDown))
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "TONG HOP" Then
            Col = Switch(Sh.Name = "nam45", 3, Sh.Name = "nam123", 4, _
                Sh.Name = "nu45", 6, Sh.Name = "nu123", 5)
            Sh.[Z1].Value = Sh.[C1].Value
            Sh.[z2].Value = Cls.Value
            Rws = Sh.[D1].CurrentRegion.Rows.Count
            Cells(Cls.Row, Col).Value = WF.DSum(Sh.[C1].Resize(Rws, 2), Sh.[D1], Sh.[Z1:Z2])
        End If
    Next Sh
 Next Cls
 Application.ScreenUpdating = True
 [G2].Value = Timer - Tmr
Err_:           Exit Sub
LoiCT:
    If Err = 94 Then
        Resume Next
    Else
        MsgBox Err:         GoTo Err_
    End If
End Sub
Dạ. mọi thứ hoàn hảo rồi ạ bác.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom