Bạn xem file xem được chưa !nhờ các a chị vào giúp mình với ạ!



Bạn xem file này có được không. Nhớ enable macro, mình dùng hàm định nghĩa.Làm sao để khi lọc đến bộ phận nào thì ô D108 = bộ phận ấy, ô E108 đếm được tổng số người của bộ phận




Mình thì không rành về vba nên mình dùng hàm sau tại ô E108Làm sao để khi lọc đến bộ phận nào thì ô D108 = bộ phận ấy, ô E108 đếm được tổng số người của bộ phận
Cảm ơn nick Laulemroi nhé, đúng ý của mình rồi đó, nhưng liệu có cách nào chỉ cần dùng công thức excel mà ko cần dùng đến Macro không?
=IF(COUNTA(D6:D106)=SUBTOTAL(103,D6:D106),"",INDEX(D6:D106,MATCH(1,SUBTOTAL(103,OFFSET($D$5,,,ROW(INDIRECT("1:"&ROWS(D6:D106))),)),0)))



Bác ndu96081631 dùng công thức hay quá. Bác có thể giải thích cơ chế hoạt động được không ạ.
SUBTOTAL(103,OFFSET($D$5,,,ROW(INDIRECT("1:"&ROWS(D6:D106))),))



Nhờ bác xem qua file e gửi, e thay đổi thứ tự dữ liệu trong Range(D6Giải thuật chính ở đây là SUBTOTAL. Cứ món nào liên quan đến việc lấy dữ liệu sau khi AutoFilter thì bạn hãy nghĩ đến SUBTOTAL
Để hiểu công thức trên, không gì bằng ta tách chúng ta thành từng đoạn nhỏ mà nghiên cứu. Đầu tiên bạn hãy nghiên cứu đoạn này:
Bôi đen đoạn đó trên thanh Formula rồi nhấn F9 ---> Xem kết quả và tự... suy nghĩ nhéMã:SUBTOTAL(103,OFFSET($D$5,,,ROW(INDIRECT("1:"&ROWS(D6:D106))),))
(giải thích toàn bộ chắc... chết)
Nhờ bác xem qua file e gửi, e thay đổi thứ tự dữ liệu trong Range(D6106) thì hàm của bác không hiện đúng nữa. Phải chăng là do hàm MATCH?
=IF(COUNTA(D6:D106)=SUBTOTAL(103,D6:D106),"",INDEX(D6:D106,MATCH(1,SUBTOTAL(103,OFFSET($D$5[COLOR=#ff0000][SIZE=5],,,[/SIZE][/COLOR]ROW(INDIRECT("1:"&ROWS(D6:D106))),)),0)))
=IF(COUNTA(D6:D106)=SUBTOTAL(103,D6:D106),"",INDEX(D6:D106,MATCH(1,SUBTOTAL(103,OFFSET($D$5[COLOR=#ff0000][SIZE=5],[/SIZE][/COLOR]ROW(INDIRECT("1:"&ROWS(D6:D106))),)),0)))
Làm sao để khi lọc đến bộ phận nào thì ô D108 = bộ phận ấy, ô E108 đếm được tổng số người của bộ phận
=INDEX($D$6:$D$106;MAX(IF(SUBTOTAL(103;OFFSET($D$5;ROW($1:$101);));ROW($1:$101);"")))
=COUNTIF($D$6:$D$106;$D$109))