Ngocminh19
Thành viên chính thức
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 30/5/15
- Bài viết
- 70
- Được thích
- 5
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,F3 là giá trị tổng số lượng,theo điều kiện cùng LOT,cùng công đoạn SEP M010 ở bên Sheet Data ạ
Em có để ảnh ở đây ạ
View attachment 302510
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 đó.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
ý e là: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 đó.
Mình hỏi bạn là khi làm thủ công bạn sẽ làm thế nào, Ví dụ:ý 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
Em xin nói theo ý em là :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.
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.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
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.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
View attachment 302516
Ngày | SLg | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Kiểm tra lại nhé.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
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
'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!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
No | DATE | STEP | PART ID | LOT ORINGINAL | Qty |
1 | 7/15/2024 | M010 | MZ7L3500HBLU-1BE00-MQ2 | B003000429 | 3,600 |
3 | 7/15/2024 | M010 | MZ7L3500HBLU-1BE00-MQ2 | B005000429 | 1,416 |
2 | 7/15/2024 | M015 | MZ7L3500HBLU-1BE00-MQ2 | B003000429 | 264 |
4 | 7/15/2024 | M121 | MZ7L3500HBLU-1BE00-MQ2 | B00X000428 | 1 |
9 | 7/15/2024 | M121 | MZ7L3500HBLU-1BE00-MQ2 | B00Y000428 | 575 |
13 | 7/15/2024 | M121 | MZ7L3500HBLU-1BE00-MQ2 | B011000428 | 1,200 |
5 | 7/15/2024 | M160 | MZ7L3500HBLU-1BE00-MQ2 | B00X000428 | 3 |
10 | 7/15/2024 | M160 | MZ7L3500HBLU-1BE00-MQ2 | B00Y000428 | 803 |
14 | 7/15/2024 | M160 | MZ7L3500HBLU-1BE00-MQ2 | B011000428 | 420 |
6 | 7/15/2024 | M164 | MZ7L3500HBLU-1BE00-MQ2 | B00X000428 | 1 |
11 | 7/15/2024 | M164 | MZ7L3500HBLU-1BE00-MQ2 | B00Y000428 | 1,162 |
15 | 7/15/2024 | M164 | MZ7L3500HBLU-1BE00-MQ2 | B011000428 | 240 |
7 | 7/15/2024 | M165 | MZ7L3500HBLU-1BE00-MQ2 | B00X000428 | 803 |
12 | 7/15/2024 | M165 | MZ7L3500HBLU-1BE00-MQ2 | B00Y000428 | 575 |
16 | 7/15/2024 | M165 | MZ7L3500HBLU-1BE00-MQ2 | B011000428 | 180 |
8 | 7/15/2024 | M170 | MZ7L3500HBLU-1BE00-MQ2 | B00X000428 | 1,162 |
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 ạ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.
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ạiTrong 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,![]()
![]()
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ày SLg 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
Code bài trên chạy cho dữ liệu theo bài 1.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é
No DATE STEP PART ID LOT ORINGINAL Qty 1 7/15/2024M010 MZ7L3500HBLU-1BE00-MQ2 B003000429 3,600 3 7/15/2024M010 MZ7L3500HBLU-1BE00-MQ2 B005000429 1,416 2 7/15/2024M015 MZ7L3500HBLU-1BE00-MQ2 B003000429 264 4 7/15/2024M121 MZ7L3500HBLU-1BE00-MQ2 B00X000428 1 9 7/15/2024M121 MZ7L3500HBLU-1BE00-MQ2 B00Y000428 575 13 7/15/2024M121 MZ7L3500HBLU-1BE00-MQ2 B011000428 1,200 5 7/15/2024M160 MZ7L3500HBLU-1BE00-MQ2 B00X000428 3 10 7/15/2024M160 MZ7L3500HBLU-1BE00-MQ2 B00Y000428 803 14 7/15/2024M160 MZ7L3500HBLU-1BE00-MQ2 B011000428 420 6 7/15/2024M164 MZ7L3500HBLU-1BE00-MQ2 B00X000428 1 11 7/15/2024M164 MZ7L3500HBLU-1BE00-MQ2 B00Y000428 1,162 15 7/15/2024M164 MZ7L3500HBLU-1BE00-MQ2 B011000428 240 7 7/15/2024M165 MZ7L3500HBLU-1BE00-MQ2 B00X000428 803 12 7/15/2024M165 MZ7L3500HBLU-1BE00-MQ2 B00Y000428 575 16 7/15/2024M165 MZ7L3500HBLU-1BE00-MQ2 B011000428 180 8 7/15/2024M170 MZ7L3500HBLU-1BE00-MQ2 B00X000428 1,162