Code tổng hợp dữ liệu từ nhiều sheet (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

mhung12005

Thành viên chậm chạm
Tham gia
20/7/11
Bài viết
1,598
Được thích
1,261
Nghề nghiệp
Đâu có việc thì làm
Xin chào các anh, chị trên diễn đàn

Em muốn viết 1 đoạn code tổng hợp dữ liệu, rất mong các anh chị làm giúp hoặc có giải pháp khác.

Các yêu cầu em đã giải thích trong file đính kèm rồi ạ. Xin xem file đính kèm.

Em xin cảm ơn nhiều.
 

File đính kèm

Xin chào các anh, chị trên diễn đàn

Em muốn viết 1 đoạn code tổng hợp dữ liệu, rất mong các anh chị làm giúp hoặc có giải pháp khác.

Các yêu cầu em đã giải thích trong file đính kèm rồi ạ. Xin xem file đính kèm.

Em xin cảm ơn nhiều.
Kiểm tra thử File này xem kết quả có đúng không? Không có nhiều Sheet nên chưa thử.
 

File đính kèm

Upvote 0
Xin chào các anh, chị trên diễn đàn

Em muốn viết 1 đoạn code tổng hợp dữ liệu, rất mong các anh chị làm giúp hoặc có giải pháp khác.

Các yêu cầu em đã giải thích trong file đính kèm rồi ạ. Xin xem file đính kèm.

Em xin cảm ơn nhiều.
Trong file bạn nói rằng:
Đây là file test nên em chỉ để có 2 sheet dữ liệu (sợ nặng). Thực tế thì có đến 20 sheet.
Vậy xin hỏi lại: Các sheet mà bạn cần tổng hợp có gì làm dấu hiệu nhận biết? Liệu có phải là tổng hợp tất cả những sheet mà tên sheet có dạng N.x (với xlà số nguyên) khổng?
 
Upvote 0
Kiểm tra thử File này xem kết quả có đúng không? Không có nhiều Sheet nên chưa thử.
@ bác Ba Tê: Cảm ơn bác nhiều. Lúc nào cũng rất nhanh và nhiệt tình. Để em test thử code xem sao, có gì lại phiền bác tiếp vậy.
Thực ra em cũng đang tập tọe cái món VBA này nhưng "tiêu hóa" hơi chậm.
Trong file bạn nói rằng:

Vậy xin hỏi lại: Các sheet mà bạn cần tổng hợp có gì làm dấu hiệu nhận biết? Liệu có phải là tổng hợp tất cả những sheet mà tên sheet có dạng N.x (với xlà số nguyên) khổng?

@ anh ndu: Dạ đúng là như vậy đó anh. Các sheet có dạng No. xxx (với xxx tăng dần nhưng không liền nhau). VD như: No. 300, No. 304, No. 305, No. 313, ...anh xem có giải pháp nào tốt hơn để em học hỏi với nhé. Rất cảm ơn anh.
 
Upvote 0
@ bác Ba Tê: Cảm ơn bác nhiều. Lúc nào cũng rất nhanh và nhiệt tình. Để em test thử code xem sao, có gì lại phiền bác tiếp vậy.
Thực ra em cũng đang tập tọe cái món VBA này nhưng "tiêu hóa" hơi chậm.


@ anh ndu: Dạ đúng là như vậy đó anh. Các sheet có dạng No. xxx (với xxx tăng dần nhưng không liền nhau). VD như: No. 300, No. 304, No. 305, No. 313, ...anh xem có giải pháp nào tốt hơn để em học hỏi với nhé. Rất cảm ơn anh.
Code của Ba Tê vậy là được rồi (cũng có thể bỏ luôn công thức CELL("filename"...) gì gì đó và đưa vào code luôn...)
Nếu có gì yêu cầu gì khác thì ta bàn tiếp
 
Upvote 0
Code của Ba Tê vậy là được rồi (cũng có thể bỏ luôn công thức CELL("filename"...) gì gì đó và đưa vào code luôn...)
Nếu có gì yêu cầu gì khác thì ta bàn tiếp

Nhờ các anh (chị) giúp em viết code cho sheet tong_hop với, em có gửi kèm file và nội dung cần sự giúp đỡ trong sheet tong_hop
 
Upvote 0
Bạn đưa lên các reang tính trống trơn vậy thì làm cái gì? & lấy cái gì để kiểm đúng sai?

Nếu là công việc của bạn thì hãy giả lập số liệu & đưa lại file đi thôi!
 
Upvote 0
Nhờ các anh (chị) giúp em viết code cho sheet tong_hop với, em có gửi kèm file và nội dung cần sự giúp đỡ trong sheet tong_hop
Đưa số liệu vào các sheet(giả cũng được) và nhập kết quả mong muốn bằng tay để có thể kiểm tra xem code đúng hay sai nhé. Đưa File nên ngay!
 
Upvote 0
Đưa số liệu vào các sheet(giả cũng được) và nhập kết quả mong muốn bằng tay để có thể kiểm tra xem code đúng hay sai nhé. Đưa File nên ngay!
Em đưa file lên lại các anh (chị) giúp em với nhé! thanks các anh (chị)! cho em hỏi thêm em tạo 1 form nhập số liệu như vậy nhưng giờ em muốn khi chọn Tap Dân dụng thì khi bấm ghi sẽ ghi vào sheet Dan_dung, chọn Tab Giao_thong thì ghi vào sheet Giao_thong, tương tự cho Quy hoạch thì thêm code thế nà?
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em thêm thông tin vào phần tổng hợp bằng tay được lấy từ các sheet
 

File đính kèm

Upvote 0
Bạn xem theo file

[thongbao]Nếu phát sinh dữ liệu tự động cập nhật [/thongbao]

Chuyện này còn fải bàn lại cái đã!
Vì nó tùy thuộc nhiều vô chuyện nhập liệu của bạn
 

File đính kèm

Upvote 0
Em cảm ơn! cho em hỏi thêm em tạo 1 form nhập số liệu như vậy nhưng giờ em muốn khi chọn Tap Dân dụng thì khi bấm ghi sẽ ghi vào sheet Dan_dung, chọn Tab Giao_thong thì ghi vào sheet Giao_thong, tương tự cho Quy hoạch thì thêm code thế nào?
Và em muốn lồng thêm điều kiện là nếu đã nộp thẩm định hoặc đã nộp phí thì mới đưa dữ liệu sang sheet tổng hợp thì thêm code chỗ nào anh nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
em mới sửa lại file anh (chị) giúp em thêm một ít nữa nhé thank các anh chị nhiều.
 
Upvote 0
Bạn lấy cái này chép đè lên toàn bộ cái macro cũ là được nè.

PHP:
Option Explicit
Sub TongHop()
 Dim J As Byte, Rws As Long:                        Dim ShName As String
 Dim Sh As Worksheet, Rng As Range, Cls As Range
 
 Rws = [b8].CurrentRegion.Rows.Count
 [b8].Resize(Rws, 10).ClearContents
 For J = 1 To 4
    ShName = Choose(J, "Dan_Dung", "Giao_Thong", "Quy_Hoach", "GPXD", "GPE.COM")
    Set Sh = ThisWorkbook.Worksheets(ShName)
    If J < 4 Then
        Set Rng = Sh.Range(Sh.[f6], Sh.[f6].End(xlDown))
    Else
        Set Rng = Sh.Range(Sh.[c7], Sh.[c7].End(xlDown))
    End If
    For Each Cls In Rng
        With [b36].End(xlUp).Offset(1)
            
            If J < 4 Then
                If UCase$(Sh.Cells(Cls.Row, "Y").Value) = "X" Then
                    .Value = Cls.Value
                    .Offset(, 1).Value = Sh.Cells(Cls.Row, "Z").Value
                    .Offset(, 2).Value = Sh.Cells(Cls.Row, "T").Value
                    .Offset(, 9).Value = Sh.Cells(Cls.Row, "AA").Value
                End If
            Else
                If UCase$(Cls.Offset(, 2).Value) = "X" Then
                    .Value = Cls.Value
                    .Offset(, 1).Value = Cls.Value
                    .Offset(, 6).Value = Cls.Offset(, 1).Value
                    .Offset(, 9).Value = Cls.Offset(, 3).Value
                End If
            End If
        End With
    Next Cls
 Next J
End Sub
 
Upvote 0
Em cảm ơn! Xin giúp em thêm một ít nữa, trong file e có tạo form nhập số liệu như vậy nhưng giờ em muốn khi chọn Tap Dân dụng thì khi bấm ghi sẽ ghi vào sheet Dan_dung, chọn Tab Giao_thong thì ghi vào sheet Giao_thong, tương tự cho Quy hoạch thì thêm code thế nào? khi mình đánh dấu chọn vào đã nộp thì làm thế nào để ghi được thành dấu "x" vào cột đã nộp?
 
Upvote 0
Tiện thể nhờ các anh (chị) hỗ trợ em code cho công thức trong file với ạ.
 

File đính kèm

Upvote 0
Nhờ các anh chị giúp em thêm một xíu nữa tại bài #16 và xem giúp em bài #17 với file sau này nó cũng gần giống như file trước nhưng khi ta chọn số giấy rút thì sẽ nạp dữ liệu từ sheet Data sang và tạo nút lưu sửa thì nội dung được ghi vô lại data bỏ cái nội dung cũ, anh (chị) nào rảnh giúp em với, em cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Macro sự kiện của bạn đây

Tiện thể nhờ các anh (chị) hỗ trợ em code cho công thức trong file với ạ.

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim fAdd As String
 
 If Not Intersect(Target, [K7]) Is Nothing Then
    [a17].Resize(9, 9).ClearContents
    Set Sh = ThisWorkbook.Worksheets("DATA")
    Set Rng = Sh.Range(Sh.[d10], Sh.[d10].End(xlDown))
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        fAdd = sRng.Address
        Do
            With [A25].End(xlUp).Offset(1)
                .Value = sRng.Offset(, 8).Value                 'Noi Dung TT'
                .Offset(, 2).Value = sRng.Offset(, 6).Value     'Ma NDKT'
                .Offset(, 4).Value = sRng.Offset(, 10).Value    'Ma Ngành KT'
                .Offset(, 5).Value = sRng.Offset(, 12).Value    'Ma Nguòn NSNN'
                .Offset(, 6).Value = sRng.Offset(, 9).Value     'TTièn'
            End With
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> fAdd
    End If
 End If
End Sub
 
Upvote 0
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim fAdd As String
 
 If Not Intersect(Target, [K7]) Is Nothing Then
    [a17].Resize(9, 9).ClearContents
    Set Sh = ThisWorkbook.Worksheets("DATA")
    Set Rng = Sh.Range(Sh.[d10], Sh.[d10].End(xlDown))
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        fAdd = sRng.Address
        Do
            With [A25].End(xlUp).Offset(1)
                .Value = sRng.Offset(, 8).Value                 'Noi Dung TT'
                .Offset(, 2).Value = sRng.Offset(, 6).Value     'Ma NDKT'
                .Offset(, 4).Value = sRng.Offset(, 10).Value    'Ma Ngành KT'
                .Offset(, 5).Value = sRng.Offset(, 12).Value    'Ma Nguòn NSNN'
                .Offset(, 6).Value = sRng.Offset(, 9).Value     'TTièn'
            End With
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> fAdd
    End If
 End If
End Sub

Em cảm ơn nhiều ạ, em còn 1 vấn đề nằm tại bài #14 đó là liên quan tới form trong file quản lý hồ sơ, em có lập 1 form trong đó có 3 tab. Em muốn nhờ hỏi anh (chị) giúp em ghi dữ liệu của các tab đó thì phải làm sao? vì tab đầu tiên em làm được rồi, còn 2 tab kia thì code cũng giống vậy hay có thay đổi gì không và muốn đánh dấu "x" vào cột đã nộp thẩm định từ dấu checkbox thì viết code thế nào ạ? mà khi bấm ghi thì dữ liệu không điền vào vị trí tiếp bên dưới mà ghi đè lên dữ liệu đó mới nhập trước đó. Xin chỉ giúp em với. Thanks anh (chị)
 
Lần chỉnh sửa cuối:
Upvote 0
anh ChanhTQ@ hay anh (chị) nào giúp em một xíu nữa với bai #14 là file em gửi bổ sung lại. thanks các anh (chị) nhiều. em thấy nhiều người vào nhưng chưa thấy ai trả lời. mong nhận được sự giúp đỡ.
 
Lần chỉnh sửa cuối:
Upvote 0
Hic không ai giúp em sao? có ai giúp giùm với!
 
Upvote 0
em gửi lại file em mới sửa và code trong form nhờ các anh (chị) các bác xem giúp và sửa hộ em với!
 
Upvote 0
có bác nào giúp em cái này với, mấy ngày nay không ai giúp hết hic hic
 
Upvote 0

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

Back
Top Bottom