Giúp tổng hợp dữ liệu theo từng ngày và chia công đoạn

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

Ngocminh19

Thành viên chính thức
Tham gia
30/5/15
Bài viết
70
Được thích
5
Em chào anh chị
Em cần tổng hợp dữ liệu lại dể coppy ra hỗ trợ báo cáo khác(Dùng công thức rất nặng file ạ). Mong anh chị hỗ trợ giúp em viết code VBA để tổng hợp.
Mong mọi người ,xem và giúp đỡ em với
Chi tiết yêu cầu em có để trong file đính kèm ạ
Em cảm ơn!
1721396317987.png
 

File đính kèm

  • DU LIEU.xlsm
    4.1 MB · Đọc: 30
Chưa thể hiểu bạn thực hiện thống kê như thế nào!
Bạn cụ thể xem tại sao ở ô [F3] lại có con số 3 600?!
 
Upvote 0
Upvote 0
Bạn nên diễn giải cụ thể từng bước làm thủ công, các điều kiện của các bước đó chứ như thế này chưa hiểu được.
Vâng. Em cảm ơn anh đã chỉ bảo,em vừa xem lại.
Cột F đúng kết quả nãy em cập nhập chưa chuẩn
Em vừa thêm cột ngày bên sheet Data và sumifs lại.Bác xem giúp em ạ
Em cảm ơn!
1721438606833.png
 

File đính kèm

  • DU LIEU1.xlsm
    4.6 MB · Đọc: 2
Upvote 0
Vâng. Em cảm ơn anh đã chỉ bảo,em vừa xem lại.
Cột F đúng kết quả nãy em cập nhập chưa chuẩn
Em vừa thêm cột ngày bên sheet Data và sumifs lại.Bác xem giúp em ạ
Em cảm ơn!
View attachment 302512
Cột thêm mới của bạn không làm rõ hơn vấn đề, bạn chưa diễn giải cụ thể các bước làm thủ công và điều kiện đi kèm các bước đó.
 
Upvote 0
Cột thêm mới của bạn không làm rõ hơn vấn đề, bạn chưa diễn giải cụ thể các bước làm thủ công và điều kiện đi kèm các bước đó.
ý e là:
1.Em muốn tổng hợp từ dữ liệu hệ hống,chia rất nhiều LOT con,rất nhiều dòng.
2. Các LOT con đó đều tách ta từ LOT Gốc(em có làm công thức ở sheet DATA cột A)= Lấy 4 ký tự đầu(Lot con)+ 3 số "000" ở giữa+4 ký tự cuối(Lot con) => Nên số LOT gốc sẽ ít hơn rất nhiều
3. Em muốn tổng hợp theo từng ngày sản xuất có bao nhiêu LOT gốc ,từ LOT gốc sản xuất theo điều kiện ở các bước theo danh sách STEP được số lượng như nào
chỗ danh sách STEP có thế phát sinh nếu có thêm công đoạn mới (em sẽ điền thêm nếu phát sinh ở cột J trong sheet MONG MUON
4. Ở sheet MONG MUON,em điền các cột lấy ví dụ cho LOT B003000429 tại ngày 15 theo từng công đoạn,có cột F em điền kết quả bằng công thức thôi
Anh xem giúp em
Dưới đây là danh sách công đoạn ( thứ tự nó sẽ giống cộc C trong bảng ạ)
1721439826354.png
 
Upvote 0
ý e là:
1.Em muốn tổng hợp từ dữ liệu hệ hống,chia rất nhiều LOT con,rất nhiều dòng.
2. Các LOT con đó đều tách ta từ LOT Gốc(em có làm công thức ở sheet DATA cột A)= Lấy 4 ký tự đầu(Lot con)+ 3 số "000" ở giữa+4 ký tự cuối(Lot con) => Nên số LOT gốc sẽ ít hơn rất nhiều
3. Em muốn tổng hợp theo từng ngày sản xuất có bao nhiêu LOT gốc ,từ LOT gốc sản xuất theo điều kiện ở các bước theo danh sách STEP được số lượng như nào
chỗ danh sách STEP có thế phát sinh nếu có thêm công đoạn mới (em sẽ điền thêm nếu phát sinh ở cột J trong sheet MONG MUON
4. Ở sheet MONG MUON,em điền các cột lấy ví dụ cho LOT B003000429 tại ngày 15 theo từng công đoạn,có cột F em điền kết quả bằng công thức thôi
Anh xem giúp em
Dưới đây là danh sách công đoạn ( thứ tự nó sẽ giống cộc C trong bảng ạ)
View attachment 302514
Mình hỏi bạn là khi làm thủ công bạn sẽ làm thế nào, Ví dụ:
Bước 1 bạn làm gì, điều kiện để thực hiện như thế nào.
Bước 2 bạn làm gì, điều kiện để thực hiện như thế nào.
Bước 3 ............................................................................. cho đến khi ra kết quả cuối cùng.
Bạn lại đi trình bày em muốn thế này, muốn thế kia, nên vẫn chưa hiểu được.
 
Upvote 0
Mình hỏi bạn là khi làm thủ công bạn sẽ làm thế nào, Ví dụ:
Bước 1 bạn làm gì, điều kiện để thực hiện như thế nào.
Bước 2 bạn làm gì, điều kiện để thực hiện như thế nào.
Bước 3 ............................................................................. cho đến khi ra kết quả cuối cùng.
Bạn lại đi trình bày em muốn thế này, muốn thế kia, nên vẫn chưa hiểu được.
Em xin nói theo ý em là :
Bước 1:
-Lấy LOT Gốc => Điều kiện tách từ các LOT ID LEFT(C4842,4)&"000"&RIGHT(C4842,3) vì dụ :B003850429 =>B003000429
- Lấy ngày tại cột INTIME
Bước 2:
- Dựa vào danh sách công đoạn điều kiện tại cột J, Sắp xếp các LOT Gốc theo ngày,số lượng từ danh sách công đoạn,tên Part ID,theo ngày
- Ví dụ 1 ngày sản xuất 2 công đoạn thì chỉ cần hiện 2 công đoạn,nếu không có thì không cần thống kê vào ạ

1721442602893.png

Kết quả cuối cùng là : sắp xếp theo từng ngày,mỗi ngày có bao nhiêu LOT gốc,mỗi LOT gốc có số lượng theo từng SEP
 
Upvote 0
Em xin nói theo ý em là :
Bước 1:
-Lấy LOT Gốc => Điều kiện tách từ các LOT ID LEFT(C4842,4)&"000"&RIGHT(C4842,3) vì dụ :B003850429 =>B003000429
- Lấy ngày tại cột INTIME
Bước 2:
- Dựa vào danh sách công đoạn điều kiện tại cột J, Sắp xếp các LOT Gốc theo ngày,số lượng từ danh sách công đoạn,tên Part ID,theo ngày
- Ví dụ 1 ngày sản xuất 2 công đoạn thì chỉ cần hiện 2 công đoạn,nếu không có thì không cần thống kê vào ạ

View attachment 302515

Kết quả cuối cùng là : sắp xếp theo từng ngày,mỗi ngày có bao nhiêu LOT gốc,mỗi LOT gốc có số lượng theo từng SEP
Ngày 15/7/2024 có nhiều PART ID khác nhau, LOT ORINGAL khác nhau. Ở đây bạn mới lọc theo PART ID MZ7L3500HBLU-1BE00-MQ2 và LOT ORINGAL B003000429, vậy còn những PART ID và LOT ORINGINAL khác thì thế nào.
 
Upvote 0
Ngày 15/7/2024 có nhiều PART ID khác nhau, LOT ORINGAL khác nhau. Ở đây bạn mới lọc theo PART ID MZ7L3500HBLU-1BE00-MQ2 và LOT ORINGAL B003000429, vậy còn những PART ID và LOT ORINGINAL khác thì thế nào.
Vâng,em có điền minh họa các LOT khác,ngày 15 ,có 5 LOT như bên dưới
Anh xem giúp em

1721444283337.png
 

File đính kèm

  • DU LIEU1.xlsm
    4.5 MB · Đọc: 3
Upvote 0
Bài này theo mình nghĩ bạn tìm hiểu PowerPivot sử dụng hàm DAX chắc được, nói thật hiện tại mình đọc qua nhưng vẫn chưa hiểu bạn muốn kết quả thế nào và dựa vào điều kiện gì?
 
Upvote 0
Mình cảm giác rằng bài này xài hàm DSUM() cũng ra, nhưng sẽ chậm hơn Dictionary
Nếu không rành thì đêm dữ liệu đưa vô mảng mà duyệt; phương án này chậm cho người chưa biết những thứ cao siêu
Chủ bài đăng chưa có kinh nghiệm trong khi đưa file lên;
File đưa lên chưa giả lập để người khác hiểu vấn đề:
Ví dụ chọn ngày 15 thì chỉ cần để lại ngày này 30 dòng thôi; Số lượng nên tăng dần đều hay ngược lại; Có vậy mới kiểm tra kết quả những macro có nhã ý giúp bạn.
Nó gần giống như đem con bỏ chợ!
 
Upvote 0
Upvote 0
Trong file thì 1 ngày mà tác giả bài đăng làm ví dụ có 38 dòng dữ liệu;
Mà số 'Step' thì chỉ 1 tá thôi, :D :D :D

Con số này mới khủng hơn nè: Trong 65535 dòng dữ liệu này cô gọn từ 1 tháng 7 cho tới 19/7 mà thôi!

NgàySLg
7/2/2024​
1263​
7/3/2024​
3236​
7/4/2024​
4573​
7/5/2024​
4615​
7/6/2024​
5260​
7/7/2024​
3636​
7/8/2024​
3776​
7/9/2024​
4781​
7/10/2024​
4938​
7/11/2024​
5264​
7/12/2024​
4935​
7/13/2024​
2656​
7/14/2024​
193​
7/15/2024​
2556​
7/16/2024​
5253​
7/17/2024​
5644​
7/18/2024​
1609​
7/19/2024​
572​
 
Lần chỉnh sửa cuối:
Upvote 0
Em chào anh chị
Em cần tổng hợp dữ liệu lại dể coppy ra hỗ trợ báo cáo khác(Dùng công thức rất nặng file ạ). Mong anh chị hỗ trợ giúp em viết code VBA để tổng hợp.
Mong mọi người ,xem và giúp đỡ em với
Chi tiết yêu cầu em có để trong file đính kèm ạ
Em cảm ơn!
View attachment 302503
Kiểm tra lại nhé.
Chạy A_tonghop_Ndk

---
Trước khi chạy: alt + F11 --> tools --> references --> tìm và tích chọn microsoft scripting runtime
Mã:
Option Explicit

Sub A_tonghop_Ndk()
Dim Nguon
Dim ID, maTT
Dim Kq
Dim y, m, d, dt
Dim rws, cls
Dim i, j, k, Z

Dim dicTH As New Scripting.Dictionary

Nguon = Sheet2.Range("A2").CurrentRegion
rws = UBound(Nguon)
cls = UBound(Nguon, 2)

ReDim Kq(rws, 1 To 6)
Kq(0, 1) = "No"
Kq(0, 2) = "DATE"
Kq(0, 3) = "STEP"
Kq(0, 4) = "PART ID"
Kq(0, 5) = "LOT ORIGINAL"
Kq(0, 6) = "Qty"

For i = 2 To rws
    If Nguon(i, 5) > 0 Then
        ID = Left(Nguon(i, 1), 4) & "000" & Right(Nguon(i, 1), 3)
       
        y = Year(Nguon(i, 5))
        m = Month(Nguon(i, 5))
        d = Day(Nguon(i, 5))
        dt = DateSerial(y, m, d)
       
        maTT = dt & "#" & ID & "#" & Nguon(i, 3) & "#" & Nguon(i, 4)
        If dicTH.Exists(maTT) = False Then
            dicTH(maTT) = dicTH.Count
           
            Z = dicTH.Count
            Kq(Z, 2) = dt
            Kq(Z, 3) = Nguon(i, 4)
            Kq(Z, 4) = Nguon(i, 3)
            Kq(Z, 5) = ID
            Kq(Z, 6) = Nguon(i, 11)
        Else
            Z = dicTH(maTT) + 1
            Kq(Z, 6) = Kq(Z, 6) + Nguon(i, 11)
        End If
    End If
Next i

With Sheet1
    .UsedRange.Clear
    .Range("A2").Resize(Z + 1, 6) = Kq
    .Range("A3:A" & Z + 2).Formula = "=ROW()-2"
    .Range("A2").CurrentRegion.Borders.LineStyle = 1
    .Range("A2").CurrentRegion.Columns.AutoFit
End With

Macro2
End Sub

Mã:
'Option Explicit

Sub Macro2()
Dim rws
With Sheet1
    rws = .Range("A" & Rows.Count).End(xlUp).Row
    .Sort.SortFields.Clear
    .Sort.SortFields.Add2 Key:=Range( _
        "B3:B" & rws), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    .Sort.SortFields.Add2 Key:=Range( _
        "C3:C" & rws), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With .Sort
        .SetRange Range("A2:F" & rws)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub
 
Upvote 0
Kiểm tra lại nhé.
Chạy A_tonghop_Ndk

---
Trước khi chạy: alt + F11 --> tools --> references --> tìm và tích chọn microsoft scripting runtime
Mã:
Option Explicit

Sub A_tonghop_Ndk()
Dim Nguon
Dim ID, maTT
Dim Kq
Dim y, m, d, dt
Dim rws, cls
Dim i, j, k, Z

Dim dicTH As New Scripting.Dictionary

Nguon = Sheet2.Range("A2").CurrentRegion
rws = UBound(Nguon)
cls = UBound(Nguon, 2)

ReDim Kq(rws, 1 To 6)
Kq(0, 1) = "No"
Kq(0, 2) = "DATE"
Kq(0, 3) = "STEP"
Kq(0, 4) = "PART ID"
Kq(0, 5) = "LOT ORIGINAL"
Kq(0, 6) = "Qty"

For i = 2 To rws
    If Nguon(i, 5) > 0 Then
        ID = Left(Nguon(i, 1), 4) & "000" & Right(Nguon(i, 1), 3)
      
        y = Year(Nguon(i, 5))
        m = Month(Nguon(i, 5))
        d = Day(Nguon(i, 5))
        dt = DateSerial(y, m, d)
      
        maTT = dt & "#" & ID & "#" & Nguon(i, 3) & "#" & Nguon(i, 4)
        If dicTH.Exists(maTT) = False Then
            dicTH(maTT) = dicTH.Count
          
            Z = dicTH.Count
            Kq(Z, 2) = dt
            Kq(Z, 3) = Nguon(i, 4)
            Kq(Z, 4) = Nguon(i, 3)
            Kq(Z, 5) = ID
            Kq(Z, 6) = Nguon(i, 11)
        Else
            Z = dicTH(maTT) + 1
            Kq(Z, 6) = Kq(Z, 6) + Nguon(i, 11)
        End If
    End If
Next i

With Sheet1
    .UsedRange.Clear
    .Range("A2").Resize(Z + 1, 6) = Kq
    .Range("A3:A" & Z + 2).Formula = "=ROW()-2"
    .Range("A2").CurrentRegion.Borders.LineStyle = 1
    .Range("A2").CurrentRegion.Columns.AutoFit
End With

Macro2
End Sub

Mã:
'Option Explicit

Sub Macro2()
Dim rws
With Sheet1
    rws = .Range("A" & Rows.Count).End(xlUp).Row
    .Sort.SortFields.Clear
    .Sort.SortFields.Add2 Key:=Range( _
        "B3:B" & rws), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    .Sort.SortFields.Add2 Key:=Range( _
        "C3:C" & rws), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With .Sort
        .SetRange Range("A2:F" & rws)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub
Cảm ơn bạn!
Mình cũng đã chọn alt + F11 --> tools --> references --> tìm và tích chọn microsoft scripting runtime
Nhưng khi run vẫn báo lỗi Complie Error
Khi gộp 2 code vào thì kết quả chỉ hiện thị ngày 15 mà không hiện tất cả các ngày khác
Sau vẫn báp lỗi

Bạn xem giúp mình với nhé
NoDATESTEPPART IDLOT ORINGINALQty
1​
7/15/2024​
M010MZ7L3500HBLU-1BE00-MQ2B0030004293,600
3​
7/15/2024​
M010MZ7L3500HBLU-1BE00-MQ2B0050004291,416
2​
7/15/2024​
M015MZ7L3500HBLU-1BE00-MQ2B003000429264
4​
7/15/2024​
M121MZ7L3500HBLU-1BE00-MQ2B00X0004281
9​
7/15/2024​
M121MZ7L3500HBLU-1BE00-MQ2B00Y000428575
13​
7/15/2024​
M121MZ7L3500HBLU-1BE00-MQ2B0110004281,200
5​
7/15/2024​
M160MZ7L3500HBLU-1BE00-MQ2B00X0004283
10​
7/15/2024​
M160MZ7L3500HBLU-1BE00-MQ2B00Y000428803
14​
7/15/2024​
M160MZ7L3500HBLU-1BE00-MQ2B011000428420
6​
7/15/2024​
M164MZ7L3500HBLU-1BE00-MQ2B00X0004281
11​
7/15/2024​
M164MZ7L3500HBLU-1BE00-MQ2B00Y0004281,162
15​
7/15/2024​
M164MZ7L3500HBLU-1BE00-MQ2B011000428240
7​
7/15/2024​
M165MZ7L3500HBLU-1BE00-MQ2B00X000428803
12​
7/15/2024​
M165MZ7L3500HBLU-1BE00-MQ2B00Y000428575
16​
7/15/2024​
M165MZ7L3500HBLU-1BE00-MQ2B011000428180
8​
7/15/2024​
M170MZ7L3500HBLU-1BE00-MQ2B00X0004281,162
 

File đính kèm

  • DU LIEU1.xlsm
    4.5 MB · Đọc: 6
Upvote 0
Trên ảnh của bạn mình thấy tại 2 dòng 1 và dòng 3 đều có STEP M010 thì là đúng hay nhầm bạn nhỉ, vì trong 1 ngày (15/7/2024) lại có hai STEP trùng nhau.
Nó là 2 LOT B003000429 và B005000429 khác nhau, đều chạy ngày 15/07/2024 đều chạy tại STEP M010 bác ạ
Bài đã được tự động gộp:

Trong file thì 1 ngày mà tác giả bài đăng làm ví dụ có 38 dòng dữ liệu;
Mà số 'Step' thì chỉ 1 tá thôi, :D :D :D

Con số này mới khủng hơn nè: Trong 65535 dòng dữ liệu này cô gọn từ 1 tháng 7 cho tới 19/7 mà thôi!

NgàySLg
7/2/2024​
1263​
7/3/2024​
3236​
7/4/2024​
4573​
7/5/2024​
4615​
7/6/2024​
5260​
7/7/2024​
3636​
7/8/2024​
3776​
7/9/2024​
4781​
7/10/2024​
4938​
7/11/2024​
5264​
7/12/2024​
4935​
7/13/2024​
2656​
7/14/2024​
193​
7/15/2024​
2556​
7/16/2024​
5253​
7/17/2024​
5644​
7/18/2024​
1609​
7/19/2024​
572​
Vâng,em sẽ làm theo 1 khoảng thời gian rồi coppy ra file khác sau khi tổng hợp rút gọn dữ liệu lại
 
Upvote 0
Cảm ơn bạn!
Mình cũng đã chọn alt + F11 --> tools --> references --> tìm và tích chọn microsoft scripting runtime
Nhưng khi run vẫn báo lỗi Complie Error
Khi gộp 2 code vào thì kết quả chỉ hiện thị ngày 15 mà không hiện tất cả các ngày khác
Sau vẫn báp lỗi

Bạn xem giúp mình với nhé
NoDATESTEPPART IDLOT ORINGINALQty
1​
7/15/2024​
M010MZ7L3500HBLU-1BE00-MQ2B0030004293,600
3​
7/15/2024​
M010MZ7L3500HBLU-1BE00-MQ2B0050004291,416
2​
7/15/2024​
M015MZ7L3500HBLU-1BE00-MQ2B003000429264
4​
7/15/2024​
M121MZ7L3500HBLU-1BE00-MQ2B00X0004281
9​
7/15/2024​
M121MZ7L3500HBLU-1BE00-MQ2B00Y000428575
13​
7/15/2024​
M121MZ7L3500HBLU-1BE00-MQ2B0110004281,200
5​
7/15/2024​
M160MZ7L3500HBLU-1BE00-MQ2B00X0004283
10​
7/15/2024​
M160MZ7L3500HBLU-1BE00-MQ2B00Y000428803
14​
7/15/2024​
M160MZ7L3500HBLU-1BE00-MQ2B011000428420
6​
7/15/2024​
M164MZ7L3500HBLU-1BE00-MQ2B00X0004281
11​
7/15/2024​
M164MZ7L3500HBLU-1BE00-MQ2B00Y0004281,162
15​
7/15/2024​
M164MZ7L3500HBLU-1BE00-MQ2B011000428240
7​
7/15/2024​
M165MZ7L3500HBLU-1BE00-MQ2B00X000428803
12​
7/15/2024​
M165MZ7L3500HBLU-1BE00-MQ2B00Y000428575
16​
7/15/2024​
M165MZ7L3500HBLU-1BE00-MQ2B011000428180
8​
7/15/2024​
M170MZ7L3500HBLU-1BE00-MQ2B00X0004281,162
Code bài trên chạy cho dữ liệu theo bài 1.
Bài 18 muốn chạy đúng thì vị trí các cột dữ liệu của sheet "DATA" phải i hệt bài 1 nhé bạn
 
Upvote 0
Web KT

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

Back
Top Bottom