Lọc nhân viên trong ca theo ngày

Liên hệ QC

daovanhai4486

Thành viên mới
Tham gia
28/3/17
Bài viết
38
Được thích
4
Nhờ các cao nhân giúp mình với. Mình dùng excel bản 2010, có bảng dữ liệu đính kèm, mục đích là lấy mã nhân viên của từng ca theo cột D " MSNV" của từng ngày ( các ngày độc lập nhau, nhân viên có thể làm nhiều ca trong một ngày), làm sao lọc được kết quả giống như cột H và cột I, mình cảm ơn nhiều!
 

File đính kèm

Nhờ các cao nhân giúp mình với. Mình dùng excel bản 2010, có bảng dữ liệu đính kèm, mục đích là lấy mã nhân viên của từng ca theo cột D " MSNV" của từng ngày ( các ngày độc lập nhau, nhân viên có thể làm nhiều ca trong một ngày), làm sao lọc được kết quả giống như cột H và cột I, mình cảm ơn nhiều!
Công thức làm mẫu ở cột K và cột L, bác tùy biến cho các vùng còn lại ạ
 

File đính kèm

Công thức làm mẫu ở cột K và cột L, bác tùy biến cho các vùng còn lại ạ
Công thức làm mẫu ở cột K và cột L, bác tùy biến cho các vùng còn lại ạ
Công thức vẫn chưa dc ổn lắm, lúc mình kéo xuống công thức ở cột K vẫn hiện tên trùng lặp, mình có chèn hàm uniques nhưng lúc áp dụng file chạy vẫn sai ạ ! Nhờ ngâm cứu lại giùm mình với ạ.
 

File đính kèm

  • abc.png
    abc.png
    106.3 KB · Đọc: 17
Công thức vẫn chưa dc ổn lắm, lúc mình kéo xuống công thức ở cột K vẫn hiện tên trùng lặp, mình có chèn hàm uniques nhưng lúc áp dụng file chạy vẫn sai ạ ! Nhờ ngâm cứu lại giùm mình với ạ.
Nếu là Excel 365, anh dùng hàm này (Ngoài 365 ra thì em chưa biết công thức lọc trùng, nhờ người khác làm hộ vậy)

=SORT(UNIQUE(FILTER($D$2:$D$40,($F$2:$F$40=$H$1)*($F$2:$F$40<>"")*($D$2:$D$40<>""))),,1)

(Nếu không cần sắp xếp theo tên thì anh bỏ hàm Sort đi)
 
Nhờ các cao nhân giúp mình với. Mình dùng excel bản 2010, có bảng dữ liệu đính kèm, mục đích là lấy mã nhân viên của từng ca theo cột D " MSNV" của từng ngày ( các ngày độc lập nhau, nhân viên có thể làm nhiều ca trong một ngày), làm sao lọc được kết quả giống như cột H và cột I, mình cảm ơn nhiều!
Bạn thử:
L2=IFERROR(IF(COUNTIF(L$1:L1,INDEX($B$1:$B$43,IFERROR(AGGREGATE(15,3,IF(($F$2:$F$43=L$1)*($B$2:$B$43<>""),ROW($B$2:$B$43)),ROW(A1)),""),))>=1,"",INDEX($B$1:$B$43,IFERROR(AGGREGATE(15,3,IF(($F$2:$F$43=L$1)*($B$2:$B$43<>""),ROW($B$2:$B$43)),ROW(A1)),""),)),"")
Ctrl+Shift+Enter ->Fill sang Cột M
Nếu không nhất thiết sử dụng công thức thì có thể dùng Pivot Table với vài cú Click chuột cũng cho kết quả
1649253674541.png
 

File đính kèm

Lần chỉnh sửa cuối:
Bài #1: "Mình dùng excel bản 2010"

Bài #4: "mình có chèn hàm uniques "

Bản excel 2010 có hàm này luôn?

:giveup:
mình chèn code nên mới chạy dc hàm này ạ! khổ nổi chỉ chèn dc mỗi hàm uniques còn hàm filter lại chịu!
Bài đã được tự động gộp:

Bạn thử:
L2=IFERROR(IF(COUNTIF(L$1:L1,INDEX($B$1:$B$43,IFERROR(AGGREGATE(15,3,IF(($F$2:$F$43=L$1)*($B$2:$B$43<>""),ROW($B$2:$B$43)),ROW(A1)),""),))>=1,"",INDEX($B$1:$B$43,IFERROR(AGGREGATE(15,3,IF(($F$2:$F$43=L$1)*($B$2:$B$43<>""),ROW($B$2:$B$43)),ROW(A1)),""),)),"")
Ctrl+Shift+Enter ->Fill sang Cột M
Nếu không nhất thiết sử dụng công thức thì có thể dùng Pivot Table với vài cú Click chuột cũng cho kết quả
View attachment 274114
Cảm ơn bạn nhiều, để mình thử xem!
 
Lần chỉnh sửa cuối:
Bạn thử:
L2=IFERROR(IF(COUNTIF(L$1:L1,INDEX($B$1:$B$43,IFERROR(AGGREGATE(15,3,IF(($F$2:$F$43=L$1)*($B$2:$B$43<>""),ROW($B$2:$B$43)),ROW(A1)),""),))>=1,"",INDEX($B$1:$B$43,IFERROR(AGGREGATE(15,3,IF(($F$2:$F$43=L$1)*($B$2:$B$43<>""),ROW($B$2:$B$43)),ROW(A1)),""),)),"")
Ctrl+Shift+Enter ->Fill sang Cột M
Nếu không nhất thiết sử dụng công thức thì có thể dùng Pivot Table với vài cú Click chuột cũng cho kết quả
View attachment 274114
Thấy cái công thức là rối loạn tiền đình luôn.
 
Em dùng bản 2010 nên giới hạn nhiều hàm mới
cứ nghĩ được đến đâu thì viết đến đấy thôi Bác
Chắc sẽ có cách ngắn, gọn và đỡ rối hơn
Tôi không quen công thức nên mới nói thế, chứ không có ý nói dở hay, bạn à. Cả đời tôi làm Excel, nhu cầu chỉ quanh đi quẩn lại có mấy hàm cơ bản nên đâu có học các hàm phức tạp làm gì. VBA thì khác, nhu cầu buộc tôi phải viết để dùng mà, nên trình VBA có khá 1 chút.
 
Tôi không quen công thức nên mới nói thế, chứ không có ý nói dở hay, bạn à. Cả đời tôi làm Excel, nhu cầu chỉ quanh đi quẩn lại có mấy hàm cơ bản nên đâu có học các hàm phức tạp làm gì. VBA thì khác, nhu cầu buộc tôi phải viết để dùng mà, nên trình VBA có khá 1 chút.
Em nhìn nhiều công thức như kiểu gà mắc tóc ấy. Thôi. Em chọn con đường khác để đi. Chứ nghĩ ra cái công thức phức tạp thế kia. Chắc không làm được
 
Nhờ các cao nhân giúp mình với. Mình dùng excel bản 2010, có bảng dữ liệu đính kèm, mục đích là lấy mã nhân viên của từng ca theo cột D " MSNV" của từng ngày ( các ngày độc lập nhau, nhân viên có thể làm nhiều ca trong một ngày), làm sao lọc được kết quả giống như cột H và cột I, mình cảm ơn nhiều!
HTML:
H2 =IFERROR(LOOKUP(2,1/($D$2:$D$40<>"")/COUNTIFS(H$1,$F$2:$F$40)/(COUNTIFS(H$1:H1,$D$2:$D$40)=0),$D$2:$D$40),"")
Copy ngang copy xuống .
 

File đính kèm

Phiên bản lấy trên xuống:
Mã:
H2=IFERROR(INDEX($D$2:$D$40,MATCH(0,INDEX(COUNTIF(H$1:H1,$D$2:$D$40)+($D$2:$D$40="")+($F$2:$F$40<>H$1),),0)),"")
 
Bác có thể cho e xin logic của hàm được không ạ, vừa tối ưu lại ngắn gọn :D
Cấu trúc của công thức với hàm LOOKUP:
LOOKUP(2,1/(Đk 1)/Đk 2/(Đk 3),Vùng lấy kết quả)
Các Dk 1, Dk 2, Dk 3 <>0 thì lấy kết quả tương ứng trong vùng kết quả

Dk 1: ($D$2:$D$40<>"") loại dữ liệu trống
Dk 2: COUNTIFS(H$1,$F$2:$F$40) Dữ liệu cột F = ô H1 hàm countif >0
Dk 3: (COUNTIFS(H$1:H1,$D$2:$D$40)=0) Loại trùng kết quả

Ghi chú: Chỉ cần dùng Countif, countifs hơi dư
 
Cấu trúc của công thức với hàm LOOKUP:
LOOKUP(2,1/(Đk 1)/Đk 2/(Đk 3),Vùng lấy kết quả)
Các Dk 1, Dk 2, Dk 3 <>0 thì lấy kết quả tương ứng trong vùng kết quả

Dk 1: ($D$2:$D$40<>"") loại dữ liệu trống
Dk 2: COUNTIFS(H$1,$F$2:$F$40) Dữ liệu cột F = ô H1 hàm countif >0
Dk 3: (COUNTIFS(H$1:H1,$D$2:$D$40)=0) Loại trùng kết quả

Ghi chú: Chỉ cần dùng Countif, countifs hơi dư
cám ơn bác, nhưng sao điều kiện tìm đầu tiên lại là "2" , dấu "/" giữa các DK có phải là phép chia không ạ?
 
Web KT

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

Back
Top Bottom