Nhờ các bạn xem giùm công thức lọc dữ liệu

Liên hệ QC

Thanh1102

Thành viên hoạt động
Tham gia
29/11/08
Bài viết
147
Được thích
46
mình đã lọc dữ liệu lấy từ sheet 1 sang sheet 2 theo 2 điều kiện (liệt kê các phiếu nhập) và (số batch là duy nhất)nhưng mới chỉ làm được một bước. trong sheet 2 (QC) lựa chọn ngày đến ngày để hiện thị dữ liệu (dạng filter ) để nhập số liệu cho cột (FG). Nếu bỏ trắng ngày chọn thì hiện thị tất cả. mong các bạn chỉ giùm.Thank's
 

File đính kèm

Mình làm bằng macro sự kiện

Chọn tại [D6] để có kết quả lọc bên dưới, như sau

(*) Nếu chọn trị rỗng, sẽ là tất cả các records bên trang 'DataNX'

(*) Nếu chọn 1 ngày có dữ liệu thì:

(1) Nếu trước đó để [D5] rỗng: sẽ có kết quả của ngày tại [D6] này

(2) Nếu [D5] không rỗng: Kết quả lả các records trong fạm vi bạn chọn
 

File đính kèm

Cảm ơn bạ đã giúp mình. nhưng ở đây mình lọc dữ liệu lấy từ sheet 1 (DataNX) sang sheet 2 (QC) theo 2 điều kiện (liệt kê các phiếu nhập - tại cột G trong "DataNX") và (số batch là duy nhất).số lượng sẽ được sum theo số BATCH
Trong Sheet2 (QC) khi lựa chọn ngày hiện thị từ ngày...đến ngày thì dữ liệu tại Sheet2(QC) $B$11;$I$1000 được lọc ở dạng auto filter do số liệu tại cột H trong sheet2 (QC) sẽ được nhập số liệu thô. và là cơ sở dữ liệu cho các sheet khác.
Các bạn xem giúp mình nha. thank's
 
Lần chỉnh sửa cuối:
Thật ra chưa hiểu hết í bạn, nhứt là trang 'QC' thực là lộn xộn:

(*) Tại [D5] đề ngày 10/09/10, nhưng dòng 11 lại có 10/08/10 (?)

Thêm nữa: Tại ô [D6] ( đến ngày) là 10/15/10 & bên trang 'DataNX' có 4 dòng dữ liệu thuộc 10/10/10; nhưng sao không thấy bạn đưa qua 'QC' (?)


Hay thế này đi: Bạn đưa những dữ liệu bạn mong muốn có tại 'QC' lần cuối đi.

(Bạn nên biết rằng, không fải ai cũng trong ngành mà bạn đang làm, để có thể hiểu nhiều hơn những gì bạn viết như bạn.)

Bye!
 
ChanhTQ@ đã viết:
Hay thế này đi: Bạn đưa những dữ liệu bạn mong muốn có tại 'QC' lần cuối đi.

Mình đã chỉnh sửa lại chút và đưa dữ liệu kem theo yêu câu, giải thích. Các bạn xem giùm mình nha. Thank's
 
Lần chỉnh sửa cuối:
Mình đã thay đổi chút dữ liệu và gửi kem theo giải thích và mong muốn. Các bạn xem giùm mình nha.Thank's
 

File đính kèm

Bạn kiểm theo file đính kèm, nha

Nếu để trống [d6] đồng nghĩa với lọc tất cả;

Nếu [C6] trống: có nghĩa là lọc 1 ngày tại [D6]
 

File đính kèm

Quá tuyệt. Cảm ơn bạn nhiều nha.
Bạn làm ơn giải thích các dòng lệnh giùm mình nha. Mình có sửa lại chút. Bạn cho mình hỏi thêm một chút trong file đính kèm nha.
 

File đính kèm

(a) Bạn làm ơn giải thích các dòng lệnh giùm mình nha.
(b) Mình có sửa lại chút. Bạn cho mình hỏi thêm một chút trong file đính kèm nha.

(a)
PHP:
Option Explicit
Private Sub WorkSheet_Change(ByVal target As Range)
 If Not Intersect(target, [D6]) Is Nothing Then
 '2 Dòng Này: Khai Báo Các Biến Cần Dùng' 
1   Dim Batch, eRw As Long, Hop As Double, Thung As Double
   Dim Sh As Worksheet, Rng As Range
 ' Gán Trang "DataNX" Vô Biến": Tìm Dòng Cuối Của Trang & Gán Vo Biến eRw'       
3   Set Sh = Worksheets("DataNX"):               eRw = Sh.[b65500].End(xlUp).Row
 'Xóa Vùng Dữ Liệu Đưa Ra Lần Trước: Không Cập Nhựt Màn Hình'
   [B11].Resize(eRw, 6).ClearContents:          Application.ScreenUpdating = False
 'ĐKiện Nếu Ô [D6] Không Chứa DL (Dữ Liệu)'
5   If [D6].Value = "" Then
 'Vùng [AC1:AC2] Được Gán Vô Biến ĐKB (Đã Khai Báo)'
      Set Rng = Sh.[Ac1:Ac2]
7   Else    ' Nếu Không Vậy, Thì'
  'Nếu [C6] Là Trống, Thì [C6] Lấy Giá Trị Ở Ô [D6]'  
      If [c6].Value = "" Then [c6].Value = [D6].Value
 ' Giống Như Giải Thích Dòng Lệnh 6'  
9      Set Rng = Sh.[AA1:AC2]
  'Kết Thúc ĐK Tại Dòng 8'
   End If
 'Áp Dụng Fương Thức Lọc Mở Rộng Từ Vùng CSDL Sang Vùng [KQuả] '
11   Sh.[B5].Resize(eRw, 15).AdvancedFilter Action:=xlFilterCopy, _
      CriteriaRange:=Rng, CopyToRange:=Sh.[AA5].Resize(, 7)
 'Vùng [KQuả] Được Đem Xếp Theo Trường [AE6] Của Trang Sh'
13   Sh.[AA5].CurrentRegion.Sort Key1:=Sh.[ae6], Order1:=xlAscending, Key2:=Sh.[AA6], _
      Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1 ', MatchCase:=False
 'Số Dòng Của Vùng [KQuả] Đem Gán Vô Biến eRw'
15   eRw = Sh.[ae5].CurrentRegion.Rows.Count
 'Ta Tiến Hành Duyệt Toàn Bộ Các Ô Trong Cột [AE] Kể Từ Sau Dòng 6'
   For Each Rng In Sh.[ae6].Resize(eRw)
 'ĐKiện Nếu Trị Trong Ô Đang Duyệt # Với Trong Biến Batch ĐKB, Thì'
17      If Rng.Value <> Batch Then
 'Gán Trị Trong Ô í Cho Biến Này'
         Batch = Rng.Value
'ĐKiện, Nếu Số Dòng Của Ô Đang Duyệt Không Là 6, Thì'
19         If Rng.Row > 6 Then
'Với Ô Trống Đầu Tiên Sau Dòng Cuối Của Cột [B] (Trang Đang Kích Hoạt) Chứa DL'
            With [B9999].End(xlUp).Offset(1)
 'Mở Rộng Về Fải 5 Ô Của Ô Này Được Gán Trị Từ 5 Ô Kể Từ Ô Đang Khảo Sát Về Trái 4 Ô'
21               .Resize(, 5).Value = Rng.Offset(-1, -4).Resize(, 5).Value
 'Ô Thú 5 Fía Fải Được Gán Trị Từ Biến Hop: & Ô Thứ 7 là Từ Biến Thung'
               .Offset(, 5).Value = Hop:        '.Offset(, 7).Value = Thung
'23 & 24: Kết Thúc Witch & KThu1c ĐK Từ Dòng 19 '
23            End With
         End If
 'Lấy Trị Trong Ô Lệch Fải 1/2 Ô Với Ô Đang Khảo Sát Gán Vô Biến Hop/Thung ĐKB' 
25         Hop = Rng.Offset(, 1).Value:        Thung = Rng.Offset(, 2).Value
 'Rẽ Nhánh Của ĐKiện Ở Dòng 17'
      Else
'27 & 28 Cộng Dồn Trị Trong Biến Hop/Thung Với Trị Trong Các Ô Tương Ứng'
27         Hop = Rng.Offset(, 1).Value + Hop
         Thung = Rng.Offset(, 2).Value + Thung
'KThúc ĐKiện Từ Dòng 17'
29      End If
'KThúc Vòng Lặp Khảo Sát Các Ô Trong Cột [AE] (Thuộc Trang Trong Biến Sh]'
   Next Rng
'Dòng Lệnh Này Chỉ Để Tham Khảo Vì Đã Bị Vô Hiệu Hóa:'
'  Sh.[AA5].CurrentRegion.Offset(1).Copy Destination:=[B11]
 ' Tự Hiểu'
32 End If
End Sub

(b) Chưa rõ bạn muốn điều gì?!? --=0 --=0 --=0
 
Web KT

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

Back
Top Bottom