Phan Thế Hiệp
-⍟-
- Tham gia
- 10/10/17
- Bài viết
- 3,565
- Được thích
- 12,207
- Giới tính
- Nam
Hàm Frequency() bạn có thể xem như là 1 hàm đếm theo điều kiện (đại khái bạn coi nó là Countif() đi cho dễ hình dung), cách thức nó hoạt động như sau:Cho mình hỏi thêm lài tại sao ROW($1:$24))>2 lại chỉ lớn hơn 2 trong khi yêu cầu là lớn hơn hoặc bằng 3 mà. Và ROW($1:$24)) chỉ tham chiếu đến dòng 24, trong khi dữ liệu có đến dòng 28, trường hợp dữ liệu nhiều hơn thì đoạn này phải sửa thế nào ạ
- Đoạn biểu thức điều kiện: ($D$4:$D$28>=$I$1)*($C$4:$C$28=$H$1)*($B$4:$B$28=$H4)
- ($D$4:$D$28>=$I$1): Chọn cột 'Ngày' có các dòng nào thỏa >= 16/08/2018, nếu thỏa ra giá trị 1, không thỏa ra giá trị 0.
- ($C$4:$C$28=$H$1): Chọn cột 'Mặt hàng' có các dòng nào có ký tự "$", nếu thỏa ra giá trị 1, không thỏa ra giá trị 0.
- ($B$4:$B$28=$H4): Chọn cột 'Đơn vị' có các dòng nào có đơn vị (vd tại H4 là 'đơn vị 1'), nếu thỏa ra giá trị 1, không thỏa ra giá trị 0.
- Nhân ba biểu thức trên sẽ tạo 1 Mảng dọc chứa các giá trị thỏa/không thỏa hình dạng như {0;0;0;0;0;1;1;1;0;1;1;0;1....} (Xem cột E file kèm)
- MATCH($A$4:$A$28,$A$4:$A$28,): Tạo ra 1 Mảng chứa số dòng mà các Mã hàng xuất hiện lần đầu trong cột A, Ví dụ: A4: mã hàng A có Stt= 1, A9: mã hàng A cũng có Stt là 1 (tương tự cho các Mã A phía dưới), A5: mã hàng B có Stt= 2, A10: mã hàng B cũng có Stt là 2 (tương tự cho các Mã B phía dưới)....Tương ứng với biểu thức điều kiện (1.), hễ dòng nào thỏa điều kiện thì lấy "Stt" sau khi Match() trả ra, dòng không thỏa thì bằng FALSE. (Xem cột F file kèm)
- Kết quả từ hàm =IF(($D$4:$D$28>=$I$1)*($C$4:$C$28=$H$1)*($B$4:$B$28=$H4),MATCH($A$4:$A$28,$A$4:$A$28,)) sẽ cho ra 1 Mảng dọc chứa các 'Stt' dòng của các mã hàng thỏa điều kiện. (Xem cột G file kèm)
- Hàm ROW(1:24) hoặc bạn có thể thay đổi độ dài tùy hỹ ROW(1:1000) cũng chẳng sao, vì nó có ý nghĩa cung cấp các "giá trị số dòng" mà 'Stt' dòng có thể có từ kết quả của hàm IF() trên. (Xem cột H file kèm)
- Hàm FREQUENCY( IF( 'biểu thức "3."' ) , ROW(1:24) ) cứ xem như nó đếm tổng thể các 'Stt' dòng, mỗi 'Stt' dòng có bao nhiêu dòng thỏa điều kiện, kể như nó giống như Countif() (Xem cột I và J file kèm)
- Cuối cùng, lấy kết quả từ Frequency() tạo biểu thức điều kiện: Frequency() >2 (lớn hơn 2 đồng nghĩa từ 3 trở lên), dùng N() để đổi TRUE/FALSE về 1/0, rồi dùng SUM() cộng các kết quả 1/0 đó.(Xem cột K và K2 file kèm)
Thân