Lấy dữ liệu từ nhiều sheet khác nhau đổ vào 1 sheet theo nhiều điều kiện

Liên hệ QC

chienedudct

Thành viên mới
Tham gia
15/9/15
Bài viết
9
Được thích
0
trước tiên e xin chào thân ái và chúc sức khỏe đến mọi người!
E có một vấn đề như sau mong nhận được sự giúp đỡ của mọi người!
nguyenvanaVD: e có 5 sheet theo thứ tự tonghop,nguyenvana, nguyenvanb, nguyenvanc,nguyenvand
ở sheet tổng hợp e muốn theo dõi năng xuất của các nhân viên theo các điều kiện sau! Mã Sản phẩm, Mã bộ phận
khi e chọn mã sản phẩm thì sẽ lọc ra những người nào làm ở mã sản phẩm đấy, và dữ liệu năng xuất theo bộ phận của nhân viên sẽ đổ vào bộ phận tương ứng của sheet tonghop
Dưới đây là file của e ! mong mọi ngươì giúp đỡ! e xin cảm ơn!!!
 

File đính kèm

1. List tại B1 thì bạn tìm hiểu cái gọi là Data Validation ở Tab Data sẽ làm được.

2. Nếu cột A, từ A4 trở đi bạn liệt kê tên sheet (tương ứng tên nhân viên của bạn) thì có thể xài công thức cho B4 như sau (kéo qua,kéo xuống hết bản)

Mã:
 B4 =SUMIFS(INDIRECT("'"&$A4&"'!C3:C1000"),INDIRECT("'"&$A4&"'!A3:A1000"),$B$1,INDIRECT("'"&$A4&"'!B3:B1000"),B$3)

3. Còn muốn tự động lấy tên nhân viên (tên sheet vào cột A) phụ thuộc vào mã Sản phẩm khi gõ thì chắc phải đụng tới code VBA rồi.

Tuy nhu cầu mà mần nhé............

dạ em muốn tự động điền tên nhân viên vào cột A anh ạ . anh giúp em với hi hi
 
1. List tại B1 thì bạn tìm hiểu cái gọi là Data Validation ở Tab Data sẽ làm được.

2. Nếu cột A, từ A4 trở đi bạn liệt kê tên sheet (tương ứng tên nhân viên của bạn) thì có thể xài công thức cho B4 như sau (kéo qua,kéo xuống hết bản)

Mã:
 B4 =SUMIFS(INDIRECT("'"&$A4&"'!C3:C1000"),INDIRECT("'"&$A4&"'!A3:A1000"),$B$1,INDIRECT("'"&$A4&"'!B3:B1000"),B$3)

3. Còn muốn tự động lấy tên nhân viên (tên sheet vào cột A) phụ thuộc vào mã Sản phẩm khi gõ thì chắc phải đụng tới code VBA rồi.

Tuy nhu cầu mà mần nhé............

vâng e sẽ tìm hiểu thử!!! e cảm ơn bác !!1
 
Cho tôi hỏi là dữ liệu sài trong một năm của một người như vậy bao nhiêu dòng, nếu khoảng 3000 dòng thì tôi dùng cú pháp cơ bản để lọc, còn nếu lớn hơn tôi đành dùng VBA.
 
Tôi nghĩ cái này thì làm như thế này:

- Gộp Sheet
- Chạy PivotTable (để được bảng tổng hợp)
- Dùng Advanced Filter để lọc Mã Sản phẩm, Mã bộ phận.
 
Bạn xem trong file.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 

File đính kèm

Mời bạn xem file đính kèm, vui lòng thay đổi giá trị ở Ô D2 VÀ H2 ở sheet(Tonghop),để cảm nhận, lưu ý nếu muốn tìm theo tên thì để trống Ô D2, muốn tìm theo mã sp thì để trống ô H2.

chỉ nhập tối đa 10000 dòng, bạn thông cảm vì file không dùng VBA nên như thế đã thấy nặng rồi.
 

File đính kèm

trước tiên e xin chào thân ái và chúc sức khỏe đến mọi người!
E có một vấn đề như sau mong nhận được sự giúp đỡ của mọi người!
nguyenvanaVD: e có 5 sheet theo thứ tự tonghop,nguyenvana, nguyenvanb, nguyenvanc,nguyenvand
ở sheet tổng hợp e muốn theo dõi năng xuất của các nhân viên theo các điều kiện sau! Mã Sản phẩm, Mã bộ phận
khi e chọn mã sản phẩm thì sẽ lọc ra những người nào làm ở mã sản phẩm đấy, và dữ liệu năng xuất theo bộ phận của nhân viên sẽ đổ vào bộ phận tương ứng của sheet tonghop
Dưới đây là file của e ! mong mọi ngươì giúp đỡ! e xin cảm ơn!!!

Thử với VBA nhé, nhớ Enable Macros khi mở file
Thay đổi ô B1 là code chạy.
 

File đính kèm

Mời bạn xem file đính kèm, vui lòng thay đổi giá trị ở Ô D2 VÀ H2 ở sheet(Tonghop),để cảm nhận, lưu ý nếu muốn tìm theo tên thì để trống Ô D2, muốn tìm theo mã sp thì để trống ô H2.

chỉ nhập tối đa 10000 dòng, bạn thông cảm vì file không dùng VBA nên như thế đã thấy nặng rồi.

Bạn này chuyên khoá sheet, giúp người khác mà khoá rồi ai học hỏi được gì trong cái file đó.
 
Các Anh/Chị thông cảm, tôi đều giống mọi người thôi đều muốn chia sẻ cho mọi người biết về kiến thức của mình,Tôi đâu phải thể loại ích kỉ, đã lên diễn đàn thì giúp được thì giúp
Vấn đề tại sao tôi lại khóa sheet:Đơn giản trong những bài trước làm về vấn đề lọc dữ liệu kiểu cú pháp dạng này, tôi sẽ đăng một bài thật hoàn chỉnh để mọi người cùng tham khảo và phát triển thêm...chứ chưa chuẩn bị xong thì làm sao múa rìu qua mắt thợ được.
Thân!
 
Nói chơi chứ CQ bạn này có LeHoanhAnh & LeHoanHanh thì xoay sở sao đây ta?
 
Nếu mã bộ phận không phải là từ 1 -> 10 liên tục như bài trên thì xử sao trong code DIC của anh đây anh Ba nhể?
Giả sử nó là dạng text: A, X, Y , V , L, B, C, D, W, T

Lúc đó thì tác giả tự xử thôi. Làm sao "thủ thả" hết mấy cái "nếu" xảy ra.
 
Đây bài giải hoàn thiện của bạn đây, đọc thêm comment trong nhé.

Xử lý chính gồm:
Định nghĩa name
Indirect, hàm xử lý mảng (Ctrl + Shift + Enter để accept công thức)
 

File đính kèm

Thôi thì em làm luôn cái dữ liệu giả lập như em nói. Làm luôn lên cái file của anh đính kèm ở trên (có code của anh trong đó rồi.)
Anh xử giúp theo hướng tên bộ phận ở trên để em học hỏi.
Cám ơn anh!
Thử thay Sub cũ bằng cái này xem sao.
Cả tháng mới xem lại được bài này.
PHP:
Public Sub GPE_()
Dim Dic As Object, Ws As Worksheet, sArr(), dArr(1 To 100, 1 To 11)
Dim I As Long, J As Long, K As Long, CoL As Long, Rws As Long, DK As String, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("tonghop")
    DK = .[B1].Value
    sArr = .Range(.[A3], .[A3].End(xlToRight)).Value
    For I = 2 To UBound(sArr, 2)
        If Not Dic.Exists(sArr(1, I)) Then Dic.Add sArr(1, I), I
    Next I
End With
For Each Ws In Worksheets
    If Ws.Name <> "tonghop" Then
        sArr = Ws.Range(Ws.[A3], Ws.[A3].End(xlDown)).Resize(, 3).Value
        For I = 1 To UBound(sArr, 1)
            If sArr(I, 1) = DK Then
                Tem = Ws.Name
                If Not Dic.Exists(Tem) Then
                    K = K + 1
                    Dic.Add Tem, K
                    dArr(K, 1) = Tem
                End If
                If Dic.Exists(sArr(I, 2)) Then
                    CoL = Dic.Item(sArr(I, 2))
                    dArr(K, CoL) = dArr(K, CoL) + sArr(I, 3)
                End If
            End If
        Next I
    End If
Next Ws
With Sheets("tonghop")
    .[A4:K100].ClearContents
    .[A4].Resize(K, 11) = dArr
End With
Set Dic = Nothing
End Sub
 
Thôi thì em làm luôn cái dữ liệu giả lập như em nói. Làm luôn lên cái file của anh đính kèm ở trên (có code của anh trong đó rồi.)
Anh xử giúp theo hướng tên bộ phận ở trên để em học hỏi.
Cám ơn anh!
Với Dạng Dữ LIệu NHư THế Này TôI Sẽ Có GIải PHáp KHác .NHANH Và CHính Xác KHôNG Kém DIC TO đâU NHA
XEM FILE
 

File đính kèm

Với Dạng Dữ LIệu NHư THế Này TôI Sẽ Có GIải PHáp KHác .NHANH Và CHính Xác KHôNG Kém DIC TO đâU NHA
XEM FILE
Đã thử thêm hoặc sửa dữ liệu từ các sheet NguyenvanA, B, C, D rồi click vào nút UPDATEDATA nhưng chẳng thấy thay đổi cái gì cả. Xem lại code thì phát hiện bác thiếu cái này thì phải:
ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh
Ngày chủ nhật nên nhàn rỗi thật --=0
 
Lần chỉnh sửa cuối:
Đã thử thêm hoặc sửa dữ liệu từ các sheet NguyenvanA, B, C, D rồi click vào nút UPDATEDATA nhưng chẳng thấy thay đổi cái gì cả. Xem lại code thì phát hiện bác thiếu cái này thì phải:

Ngày chủ nhật nên nhàn rỗi thật --=0
thiếu câu này

ActiveWorkbook.RefreshAll
 
Web KT

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

Back
Top Bottom