Code lọc dữ liệu theo điều kiện ngày lớn nhất

Liên hệ QC

Cao Mạnh Sơn

Tôi đồng ý
Tham gia
26/11/07
Bài viết
568
Được thích
586
Tôi muốn lọc dữ liệu các đơn vị đang sản xuất các mã hàng trong 1 ngày bất kỳ, tôi đã làm bằng công thức rồi nhưng muốn dùng code VBA, tôi chỉ lọc được các giá trị ngày bằng với điều kiện.
Bây giờ tôi muốn lọc tất cả các mã hàng đang được sản xuất tại các tổ sx, đương nhiên bao gồm các mã hàng có ngày vào chuyền gần nhất so với ngày cần lọc, các giá trị ngày trước ngày gần nhất sẽ bị loại bỏ, các giá trị sau ngày cần lọc sẽ chưa được tính đến.
Tôi đã ghi chú trong file đính kèm. Mong được giúp đỡ, xin cám ơn
 

File đính kèm

Em thấy file của bác có thời gian là duy nhất mà! Vậy để đơn giản quá trình lọc thì chỉ việc lấy giá trị dòng ra là xong.
 

File đính kèm

Upvote 0
Em thấy file của bác có thời gian là duy nhất mà! Vậy để đơn giản quá trình lọc thì chỉ việc lấy giá trị dòng ra là xong.
Vậy là bạn chưa hiểu ý tôi rồi.
Trong file dữ liệu đương nhiên là duy nhất, bạn hình dung nhé: ngày 28/10 T1 XN1 vào sx MH1 đương nhiên sang ngày 29/10 vẫn đang làm MH1.ở đây mình cần phải lọc ra tùng tổ đang làm từng MH trong từng ngày chứ không phải là từng ngày có những tổ nào vào MH mới
 
Upvote 0
Vậy là bạn chưa hiểu ý tôi rồi.
Trong file dữ liệu đương nhiên là duy nhất, bạn hình dung nhé: ngày 28/10 T1 XN1 vào sx MH1 đương nhiên sang ngày 29/10 vẫn đang làm MH1.ở đây mình cần phải lọc ra tùng tổ đang làm từng MH trong từng ngày chứ không phải là từng ngày có những tổ nào vào MH mới
Bạn thử file này xem sao ?
 

File đính kèm

Upvote 0
Yêu cầu của bác không khó nhưng nhìn bảng tính thì khó hiểu.
 
Upvote 0
Yêu cầu của bác không khó nhưng nhìn bảng tính thì khó hiểu.
Anh Hướng quan tâm bắt đầu từ cột V,tôi lý giải thế này nhé:
tôi có mã hàng MH1, ngày 28/10 tôi triển khai vào sản xuất bố trí vào các tổ của các XN,
như vậy 1 mã hàng có nhiều tổ sx, Tiếp tục sang mã thứ 2, tôi bố trí các tổ khác,.....
vấn đề tôi cần là khi xem xét 1 tổ sẽ có 1 quá trình ví dụ từ ngày 1-10 sản xuất MH1,từ 11 đến 20 sx MH2.....
vậy ngày bất kỳ cần xem xét phải biết tổ đó sx MH nào.VD ngày 15/10 kết quả là MH2
áp dụng tổng quát cho n xí nghiệp và m tổ sx
anh giúp tôi nhé
 
Upvote 0
Tác giả phải biết rằng đang trao đổi với những người ngoại đạo!

Hay là thế này đi;

Bạn dùng chức năng [Table ]. . . [/Table] của diễn đàn để thể hiện hai kết quả bạn phải & sẽ đạt được nếu trang Sheet2 tại [C1] sẽ là 29/10 & 2/11 để bọn này hình dung xem sao

Mấy hôm nay cũng rất cố công nhưng chưa hiểu mô tê ra răng cả?

Đúng như Hướng nói, hiểu nhau rồi sẽ không khó với nhau nữa!:-= --=0 :-=
 
Upvote 0
Hay là thế này đi;

Bạn dùng chức năng [Table ]. . . [/Table] của diễn đàn để thể hiện hai kết quả bạn phải & sẽ đạt được nếu trang Sheet2 tại [C1] sẽ là 29/10 & 2/11 để bọn này hình dung xem sao

Mấy hôm nay cũng rất cố công nhưng chưa hiểu mô tê ra răng cả?

Đúng như Hướng nói, hiểu nhau rồi sẽ không khó với nhau nữa!:-= --=0 :-=
Làm khó cho các bác quá. em gửi chi tiết yêu cầu lại nhé
 

File đính kèm

Upvote 0
Làm khó cho các bác quá. em gửi chi tiết yêu cầu lại nhé
Bài của bạn đơn giản vâỵ thì cần gì phải dùng đến VBA
file mình làm là dùng công thức, bạn cứ thử gán một ngày 10/29/2009 hoặc 11/2/2009 xem kết quả có đúng như ý bạn không? hoặc là hàm now() để tính cho hiện tại.
sorry! nếu bạn muốn dùng CODE cho Pro hơn thì mình xin rút lui.
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Hướng quan tâm bắt đầu từ cột V,tôi lý giải thế này nhé:
tôi có mã hàng MH1, ngày 28/10 tôi triển khai vào sản xuất bố trí vào các tổ của các XN,
như vậy 1 mã hàng có nhiều tổ sx, Tiếp tục sang mã thứ 2, tôi bố trí các tổ khác,.....
vấn đề tôi cần là khi xem xét 1 tổ sẽ có 1 quá trình ví dụ từ ngày 1-10 sản xuất MH1,từ 11 đến 20 sx MH2.....
vậy ngày bất kỳ cần xem xét phải biết tổ đó sx MH nào.VD ngày 15/10 kết quả là MH2
áp dụng tổng quát cho n xí nghiệp và m tổ sx
anh giúp tôi nhé
Tôi hiểu thế này không bíêt có đúng ý Bác không.
- Cần lấy báo cáo là ngày dd/mm/yy. (ngày t)
- Trích lọc duy nhất theo Tổ X, XN Y và MH Z theo ngày < = ngày t.
- List những tổ, XN, MH mà có ngày max (gần = ngày t)
Nhưng với dữ liệu trên thì cũng hơi khó với thuật giải nêu trên.
Ví X, Y là biến và không xác định max => số cột tham chiếu không dự trù được.
Nếu dữ liệu như sau thì sẽ dễ hơn. Dữ liệu này là của hàng 10.

KH2---MH2---29/10---XN1---TO2
KH2---MH2---29/10---XN2---TO1
KH2---MH2---29/10---XN3---TO2
KH2---MH2---29/10---XN4---TO1

Không bíêt có hiểu đúng ý Bác.
 
Upvote 0
Bạn thử với macro sau xem sao

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [c1]) Is Nothing Then
   Dim Sh As Worksheet, Rng As Range, sRng As Range, Clls As Range
   Dim mRng As Range, sRng1 As Range
   Dim Format_ As String
   Dim Dat As Date, Dat0 As Date, Jj As Byte
   
   Set Sh = Sheet1:              Range("D5:D35").Clear
   Set Rng = Sh.Range(Sh.[v8], Sh.[v8].End(xlDown))
   Format_ = Rng.Cells(2, 0).NumberFormat
   Rng.NumberFormat = "MM/dd/yyyy"
   Dat0 = Format([c1].Value, "mm/dd/yyyy")
   For Jj = 0 To 9
      Dat = Dat0 - Jj
      Set sRng = Rng.Find(Dat, , xlFormulas, xlWhole)
      If Not sRng Is Nothing Then
         Set mRng = Sh.Range(sRng.Offset(, 1), Sh.Cells(sRng.Row, "iV").End(xlToLeft))
         For Each Clls In Range("B6:B17")
            Set sRng1 = mRng.Find(Clls.Value)
            If Not sRng1 Is Nothing Then
               If sRng1.Offset(, 1).Value = Clls.Offset(, 1).Value Then
                  If Clls.Offset(, 2).Value = "" Then _
                     Clls.Offset(, 2).Value = Sh.Cells(sRng.Row, "C")
               End If
            Else
            End If
         Next Clls
      End If
   Next Jj
   Rng.NumberFormat = Format_
   Jj = [B4].Interior.ColorIndex
   [B4].Resize(, 3).Interior.ColorIndex = IIf(Jj > 41, 34, Jj + 1)
 End If
End Sub


Chú ý:

(1) Các tên xí nghiệp của 2 trang tính nên giống nhau, bớt công đoạn trong tìm kiếm;

(2) Macro chỉ làm việc trong 9 ngày kể từ mốc thời gian cần khảo sát; Nếu trong chu trình sản xuất của bạn có khác hơn thì cho ý kiến để chúng chỉnh sửa;

(3) Hiện tại tại [C1] đang có hộp chọn ngày; Nếu bạn muốn vẫn xài hàm =TODAY() thì phải chỉnh đổi vài chổ; Bạn cứ yếu cầu để chúng ta thảo luận tiếp;

(4) Vài ý kiến phản hồi khác của bạn . . .


Thân ái!
 

File đính kèm

Upvote 0
Tôi hiểu thế này không bíêt có đúng ý Bác không.
- Cần lấy báo cáo là ngày dd/mm/yy. (ngày t)
- Trích lọc duy nhất theo Tổ X, XN Y và MH Z theo ngày < = ngày t.
- List những tổ, XN, MH mà có ngày max (gần = ngày t)
Nhưng với dữ liệu trên thì cũng hơi khó với thuật giải nêu trên.
Ví X, Y là biến và không xác định max => số cột tham chiếu không dự trù được.
Nếu dữ liệu như sau thì sẽ dễ hơn. Dữ liệu này là của hàng 10.

KH2---MH2---29/10---XN1---TO2
KH2---MH2---29/10---XN2---TO1
KH2---MH2---29/10---XN3---TO2
KH2---MH2---29/10---XN4---TO1

Không bíêt có hiểu đúng ý Bác.
Bác hiểu như vậy chắc đúng rồi nhưng dũ liệu thì khó xắp xếp quá.
Khi tôi sử dụng công thức tôi phải dùng hàm Dmax để lọc ta ngày lớn nhất của 1 tổ sx sau đó dò tìm từ ngày lớn nhất và mã hàng tương ứng để tìm ra tên tổ, rồi lần nữa từ tên tổ để dò lấy ngày vào sx và mã hàng đang sản xuất
To Bác SA_DQ
em cần theo dõi ngày hiện tại hay ktra 1 ngày bất kỳ trong 365 ngày của năm nên danh sách Validation sẽ không phù hợp, thứ hai là em không muốn bị khống chế thời gian, em thấy mới có ít dòng dữ liệu đã thấy hơi chậm, nếu khoảng 2000 dòng và số ngày không hạn chế thì không biết có lâu không nhỉ.
 
Lần chỉnh sửa cuối:
Upvote 0
(1) Vì em cần theo dõi ngày hiện tại hay ktra 1 ngày bất kỳ trong 365 ngày của năm nên danh sách Validation sẽ không phù hợp,
(2) thứ hai là em không muốn bị khống chế thời gian, em thấy mới có ít dòng dữ liệu đã thấy hơi chậm, nếu khoảng 2000 dòng và số ngày không hạn chế thì không biết có lâu không nhỉ.
(1) Bạn có thể bỏ cái Validation. . ấy đi; Không sao cả. Lúc đó bạn cứ việc nhập vô cái ô [C1] thân thương đó & macro sẽ thực thi sau khi bạn {ENTER}

Số ngày tối đa chỉ nên là < 367 ngày; Nhưng dù vậy cũng phải khai báo lại biến Jj có kiểu Interger mới đặng.
Nhưng đảm bảo sẽ nhanh hơn nhiều so với công thức, một khi dữ liệu càng nhiều, càng thấy nhanh hơn công thức. (Vì trong macro có xài các phương thức tìm kiếm mà!
Việc kiểm nghiệm với 2.000 dòng dữ liệu & 5 -7 trăm ngày gì đó là quyền của bạn;
Nếu thấy kết quả bạn đưa ra sau thử nghiệm là quá chậm thì chúng ta sẽ nghĩ tiếp vế việc cải tiến

Chúc vui!
 
Upvote 0
Bác hiểu như vậy chắc đúng rồi nhưng dũ liệu thì khó xắp xếp quá.
Khi tôi sử dụng công thức tôi phải dùng hàm Dmax để lọc ta ngày lớn nhất của 1 tổ sx sau đó dò tìm từ ngày lớn nhất và mã hàng tương ứng để tìm ra tên tổ, rồi lần nữa từ tên tổ để dò lấy ngày vào sx và mã hàng đang sản xuất
To Bác Trí
Vì em cần theo dõi ngày hiện tại hay ktra 1 ngày bất kỳ trong 365 ngày của năm nên danh sách Validation sẽ không phù hợp, thứ hai là em không muốn bị khống chế thời gian, em thấy mới có ít dòng dữ liệu đã thấy hơi chậm, nếu khoảng 2000 dòng và số ngày không hạn chế thì không biết có lâu không nhỉ.
Xin hỏi Bác
- Cột V (Ngày vào SX) là đã sắp xếp liên tục chưa? Và mỗi giá trị ngày sẽ hiển thị là 1 dòng, có lúc nào V9 là 28/10 và V10, V11 cùng là 28/10 => dùng match lấy dòng cuối.
- Toàn bộ thông tin về Tổ, XN thì chỉ hiển thị trong các cột từ W -> AH thôi hay sao => lấy dm tổ và XN.
Nếu OK, víêt 1 code để lấy theo data như của Bác.
 
Upvote 0
Xin hỏi Bác
- Cột V (Ngày vào SX) là đã sắp xếp liên tục chưa? Và mỗi giá trị ngày sẽ hiển thị là 1 dòng, có lúc nào V9 là 28/10 và V10, V11 cùng là 28/10 => dùng match lấy dòng cuối.
- Toàn bộ thông tin về Tổ, XN thì chỉ hiển thị trong các cột từ W -> AH thôi hay sao => lấy dm tổ và XN.
Nếu OK, víêt 1 code để lấy theo data như của Bác.
Em ít tuổi hơn bác nên cứ gọi em là em.
Cột V là ngày vào sx bất kỳ không theo thứ tự nào hết vì khi phát sinh mã hàng mới là phải nhập dữ liệu vào data,qua rất nhiều ngày,nhiều công đoạn khi đủ đk mới đưa vào sx nên không thể bố trí lần lượt được. mỗi mã hàng sẽ có duy nhất 1 ngày vào chuyền nhưng cột ngày sẽ có nhiều ngày trùng nhau vì 1 ngày có thể bố trí nhiều mã hàng.
từ cột W-AH là thông tin tổ vào sx,vì 1 xn sẽ có nhiều tổ sx,em dùng validation để lấy tên tổ theo lựa chọn của XN nên cột xn và tổ là tách. Trong vùng đó tên xn và tổ cũng là bất kỳ không theo qui luật nào cả.Cột XN có thể có các xn 1,2,3,4...
Vậy mới khó chứ Bác
 
Upvote 0
Mỗi mã hàng sẽ có duy nhất 1 ngày vào chuyền nhưng cột ngày sẽ có nhiều ngày trùng nhau vì 1 ngày có thể bố trí nhiều mã hàng. . . .
Vậy mới khó chứ Bác

Macro của mình chưa đếm xỉa đến việc này! Nhưng cho hỏi thêm, (Một câu ngệch), rằng 1 ngày hai mặt hàng nhưng có khi nào 1 tổ làm 2 mặt hàng trong ngày không vậy?
(Nếu có thì chép sao đây ta, sang cột bên cạnh ư?)

Hay bạn chịu khó đưa lên vài tháng dữ liệu xem sao?!, Một khi đã hiểu rồi, muốn đi đến tận cùng của vấn đề í mà!

--=0 :-= --=0
 
Upvote 0
Macro của mình chưa đếm xỉa đến việc này! Nhưng cho hỏi thêm, (Một câu ngệch), rằng 1 ngày hai mặt hàng nhưng có khi nào 1 tổ làm 2 mặt hàng trong ngày không vậy?
(Nếu có thì chép sao đây ta, sang cột bên cạnh ư?)

Hay bạn chịu khó đưa lên vài tháng dữ liệu xem sao?!, Một khi đã hiểu rồi, muốn đi đến tận cùng của vấn đề í mà!

--=0 :-= --=0
Ờ há.
Bác không nêu vụ này chắc em bỏ qua mất, có tình trạng 1 ngày 1 tổ bố trí không phải 2 mà nhiều mã nữa
em gửi File có thêm dữ liệu nhé
 

File đính kèm

Upvote 0
Với dữ liệu mới đưa lên của bạn, ngoài XN(i) còn có PKT,
Ngoài các tổ T1 & T2 còn có các tổ khác nữa;

Vậy xin hởi các tổ này hay PKT có để sẵn trên Sheet2 hay macro phải tự tìm & tự điền vô các cột 'B:D' bắt đầu từ dòng thứ 6 vậy?

Chờ tin bạn!
 
Upvote 0
Với dữ liệu mới đưa lên của bạn, ngoài XN(i) còn có PKT,
Ngoài các tổ T1 & T2 còn có các tổ khác nữa;

Vậy xin hởi các tổ này hay PKT có để sẵn trên Sheet2 hay macro phải tự tìm & tự điền vô các cột 'B:D' bắt đầu từ dòng thứ 6 vậy?

Chờ tin bạn!
Chào bạn
trong vùng dữ liệu của mình có cột XN và cột tên tổ. Bạn chỉ cần quan tâm đến điều kiện này thôi. Dữ liệu đó là đột xuất có đơn vị khác bổ sung nên không cần theo dõi
 
Upvote 0
Web KT

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

Back
Top Bottom