Cách chấm công theo điều kiện

Liên hệ QC

Tandattb

Thành viên mới
Tham gia
9/10/18
Bài viết
45
Được thích
9
Donate (Momo)
Donate
Giới tính
Nam
1539145961061.png
 

File đính kèm

  • Cham cong 10-2018.xlsx
    73.2 KB · Đọc: 18
Tiêu đề "mọi người giúp em tìm hàm phù hợp với ạ" quá chung chung nên vi phạm Nội Quy Diễn đàn.
Bạn có thể điều chỉnh lại theo tiêu đề như sau "Tính công theo điều kiện"


Thân.
ồ. em mới tham gia diễn đàn nên chưa hiểu lắm. Cám ơn anh.
 
không có ai có câu trả lời giúp em ạ. Mọi người giúp em với ạ
 
không có ai có câu trả lời giúp em ạ. Mọi người giúp em với ạ
Đôi lời góp ý cho bạn:
1, Tại sao không sử dụng trực tiếp giờ công là 8, 12, 16 cho sheet đầu luôn mà phải chuyển qua công dạng 1.5n, 2n gì để phức tạp tình hình thêm
2, Nếu bạn bị ép buộc sử dụng kiểu chấm công như thế này thì trường hợp người ta làm có 4 giờ hoặc 6 giờ trong ngày vì có việc riêng thì chấm công kiểu gì (0.5n, 0.75n?)
Nếu bạn đi theo hướng 1 thì chắc quá dễ cho bạn rồi, còn nếu bạn vẫn đi theo hướng của bạn thì ta tính tiếp
 
Đôi lời góp ý cho bạn:
1, Tại sao không sử dụng trực tiếp giờ công là 8, 12, 16 cho sheet đầu luôn mà phải chuyển qua công dạng 1.5n, 2n gì để phức tạp tình hình thêm
2, Nếu bạn bị ép buộc sử dụng kiểu chấm công như thế này thì trường hợp người ta làm có 4 giờ hoặc 6 giờ trong ngày vì có việc riêng thì chấm công kiểu gì (0.5n, 0.75n?)
Nếu bạn đi theo hướng 1 thì chắc quá dễ cho bạn rồi, còn nếu bạn vẫn đi theo hướng của bạn thì ta tính tiếp

hi anh Minh.
Bên em không thể áp dụng chấm công là 8,12,16h được anh ạ, vì bên em có nhiều ký hiệu thể hiện các công việc khác nhau, công "n" chỉ thể hiện1 loại công việc thôi. Và chỉ công "n" (như trong bảng chấm công của em) khi người lao động làm thêm giờ mới được cộng thêm 4h hoặc 8h.
Anh có thể giúp em công thức thực hiện yêu cầu trên không ạ.
 
hi anh Minh.
Bên em không thể áp dụng chấm công là 8,12,16h được anh ạ, vì bên em có nhiều ký hiệu thể hiện các công việc khác nhau, công "n" chỉ thể hiện1 loại công việc thôi. Và chỉ công "n" (như trong bảng chấm công của em) khi người lao động làm thêm giờ mới được cộng thêm 4h hoặc 8h.
Anh có thể giúp em công thức thực hiện yêu cầu trên không ạ.
Vậy thì làm theo cách của bạn (nhưng vẫn thắc mắc là tại sao không đi theo hướng 1 :) , thay vì chữ n mới được tính tăng ca kiểu này thì cho nó thêm 1 cột ký hiệu riêng, nếu có chữ n trên dòng đó thì người đó được tính tăng ca kiểu này)
Mã:
C4=IFERROR(SUBSTITUTE('công SX T10'!C4,"n","")*8-8,"")
Bạn tham khảo file
 

File đính kèm

  • Cham cong 10-2018.xlsx
    42.8 KB · Đọc: 7
Vậy thì làm theo cách của bạn (nhưng vẫn thắc mắc là tại sao không đi theo hướng 1 :) , thay vì chữ n mới được tính tăng ca kiểu này thì cho nó thêm 1 cột ký hiệu riêng, nếu có chữ n trên dòng đó thì người đó được tính tăng ca kiểu này)
Mã:
C4=IFERROR(SUBSTITUTE('công SX T10'!C4,"n","")*8-8,"")
Bạn tham khảo file


oh. Em cám ơn anh Minh nhé.
anh ơi. Em hỏi chút nữa ạ.
Giờ sếp em lại bảo thêm 1 loại công nữa cũng tính thêm giờ như vậy, nhưng không được để ký hiệu "n" mà để ký hiệu là "v". để cuối tháng bình xét 2 loại công.
E tính tách thành 2 bảng công rồi dùng công thức của anh, nhưng sếp không muốn tách 2 bảng công mà chỉ dùng 1 bảng. Vậy công thức trên phải sửa lại như thế nào để chấm 2 loại công này vẫn ra được thêm giờ như vậy ạ
Bài đã được tự động gộp:

Vậy thì làm theo cách của bạn (nhưng vẫn thắc mắc là tại sao không đi theo hướng 1 :) , thay vì chữ n mới được tính tăng ca kiểu này thì cho nó thêm 1 cột ký hiệu riêng, nếu có chữ n trên dòng đó thì người đó được tính tăng ca kiểu này)

anh nói cách này, nhưng em chưa hình dung ra được anh ạ. Hi
 

File đính kèm

  • giai phap cham cong.xlsx
    44.9 KB · Đọc: 5
oh. Em cám ơn anh Minh nhé.
anh ơi. Em hỏi chút nữa ạ.
Giờ sếp em lại bảo thêm 1 loại công nữa cũng tính thêm giờ như vậy, nhưng không được để ký hiệu "n" mà để ký hiệu là "v". để cuối tháng bình xét 2 loại công.
E tính tách thành 2 bảng công rồi dùng công thức của anh, nhưng sếp không muốn tách 2 bảng công mà chỉ dùng 1 bảng. Vậy công thức trên phải sửa lại như thế nào để chấm 2 loại công này vẫn ra được thêm giờ như vậy ạ
Bài đã được tự động gộp:
Nếu cách tính cho công loại n và v giống nhau thì
Mã:
C4=IFERROR(IFERROR(SUBSTITUTE('công SX T10'!C4,"n","")*8-8,SUBSTITUTE('công SX T10'!C4,"v","")*8-8),"")
 

File đính kèm

  • giai phap cham cong.xlsx
    46.8 KB · Đọc: 10
Nếu cách tính cho công loại n và v giống nhau thì
Mã:
C4=IFERROR(IFERROR(SUBSTITUTE('công SX T10'!C4,"n","")*8-8,SUBSTITUTE('công SX T10'!C4,"v","")*8-8),"")

em cám ơn anh Minh nhiều ạ.
Em mới làm về mảng này, nên tính toán trên cel còn chậm và chưa hiểu lắm. Chỉ biết các công thức đơn giản. các hàm kết hợp cũng không hiểu nhiều.
Thực tế là công thức anh cho, em cũng không hiểu gì, chỉ áp dụng máy móc thôi, nhưng vậy cũng đỡ mệt hơn nhiều rồi
Em cám ơn!
:):):):):)
 
Lần chỉnh sửa cuối:
em cám ơn anh Minh nhiều ạ.
Em mới làm về mảng này, nên tính toán trên cel còn chậm và chưa hiểu lắm. Chỉ biết các công thức đơn giản. các hàm kết hợp cũng không hiểu nhiều.
Thực tế là công thức anh cho, em cũng không hiểu gì, chỉ áp dụng máy móc thôi, nhưng vậy cũng đỡ mệt hơn nhiều rồi
Em cám ơn!
:):):):):)
Có gì đâu khó hiểu. Hàm SUBSTITUTE làm nhiệm vụ thay thế những chữ n, v nếu xuất hiện bằng tập hợp rỗng, chỉ còn lại con số để thực hiện phép tính nhân chia cộng trừ thôi. Và đương nhiên những ô không có chữ n, v sẽ bị lỗi và hàm IFERROR làm nhiệm vụ bẫy lỗi thôi :)
 
Có gì đâu khó hiểu. Hàm SUBSTITUTE làm nhiệm vụ thay thế những chữ n, v nếu xuất hiện bằng tập hợp rỗng, chỉ còn lại con số để thực hiện phép tính nhân chia cộng trừ thôi. Và đương nhiên những ô không có chữ n, v sẽ bị lỗi và hàm IFERROR làm nhiệm vụ bẫy lỗi thôi :)

ah, em hiểu rồi anh, hóa ra loại n,v còn lại 1,5 hoặc 2 sau đó *8-8, là ra kết quả mong muốn.
hi. E cám ơn anh nhé
 
1. Có thể dùng công thức này trong C4 sheets 12H:

=IFERROR(SUBSTITUTE(SUBSTITUTE('công SX T10'!C4,"n",""),"v","")*8-8,"")

2. Có thể dùng công thức mảng này trong AH4 sheets Công SX T10:

=COUNTIF(C4:AG4,"n")+COUNTIF(C4:AG4,"v")+SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(C4:AG4,"n",""),"v",""),0))

Công thức thứ 2 nhớ kết thúc bằng Ctrl+Shift+Enter.
 
1. Có thể dùng công thức này trong C4 sheets 12H:

=IFERROR(SUBSTITUTE(SUBSTITUTE('công SX T10'!C4,"n",""),"v","")*8-8,"")

2. Có thể dùng công thức mảng này trong AH4 sheets Công SX T10:

=COUNTIF(C4:AG4,"n")+COUNTIF(C4:AG4,"v")+SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(C4:AG4,"n",""),"v",""),0))

Công thức thứ 2 nhớ kết thúc bằng Ctrl+Shift+Enter.


oh, Em cám ơn, nhưng trong bảng công SX T10 của em có thêm các ký hiệu công khác ví dụ như x, 2x, x/2, 1.5x, sc, sc/2, 1.5sc, 2sc thì phải làm thế nào hả anh. vì em cần tự động thêm giờ cho sheet 12h nên em rút gọn bảng cho đỡ rối mắt, chỉ đển công ký hiệu v hoặc n thôi.
Nói chung công bên công ty em khá phứctạp. hi.
 
oh, Em cám ơn, nhưng trong bảng công SX T10 của em có thêm các ký hiệu công khác ví dụ như x, 2x, x/2, 1.5x, sc, sc/2, 1.5sc, 2sc thì phải làm thế nào hả anh. vì em cần tự động thêm giờ cho sheet 12h nên em rút gọn bảng cho đỡ rối mắt, chỉ đển công ký hiệu v hoặc n thôi.
Nói chung công bên công ty em khá phứctạp. hi.
1. Dùng tìm và thay thế x/2 về dạng 0.5x , sc/2 về 0.5sc mới sử lý được

2. Dùng hàm SUBSTITUTE thay thế, ưu tiên những ký tự có chiều dài chuỗi lớn trước , nhỏ sau như:

SUBSTITUTE(SUBSTITUTE('công SX T10'!C4,"sc",""),"s","")
 
1. Dùng tìm và thay thế x/2 về dạng 0.5x , sc/2 về 0.5sc mới sử lý được

2. Dùng hàm SUBSTITUTE thay thế, ưu tiên những ký tự có chiều dài chuỗi lớn trước , nhỏ sau như:

SUBSTITUTE(SUBSTITUTE('công SX T10'!C4,"sc",""),"s","")


Bảng công đầy đủ công ty em nó như file đính kèm dưới đây anh ạ.
Phức tạp quá, em chỉ biết dùng hàm COUNIF nên hơi dài, mà mỗi lần thêm 1 loại công là lại phải +thêm CounIf
 

File đính kèm

  • Cong nha may T9-2018.xlsx
    53.5 KB · Đọc: 21
Bảng công đầy đủ công ty em nó như file đính kèm dưới đây anh ạ.
Phức tạp quá, em chỉ biết dùng hàm COUNIF nên hơi dài, mà mỗi lần thêm 1 loại công là lại phải +thêm CounIf
Góp sức với bạn hiền tôi, và làm gọn công thức cho bạn:
Sheet "Cong SX T9":
Mã:
AI6=SUM(COUNTIF(D6:AH6,{"x/2*","x","x;*","1.5x","2x"})*{0.5,1,1,1.5,2})
Chỉ Enter, rồi fill xuống.
Bạn tìm hiểu công thức trên rồi áp dụng cho các cột AK; AL

Thân
 
Góp sức với bạn hiền tôi, và làm gọn công thức cho bạn:
Sheet "Cong SX T9":
Mã:
AI6=SUM(COUNTIF(D6:AH6,{"x/2*","x","x;*","1.5x","2x"})*{0.5,1,1,1.5,2})
Chỉ Enter, rồi fill xuống.
Bạn tìm hiểu công thức trên rồi áp dụng cho các cột AK; AL

Thân
Wow. Rất hay. Em cám ơn anh Hiệp nhé. Gọn hơn rất là nhiều ạ.
Anh có thể giải thích giúp em công thức để em hiểu hơn không ạ. Em mới làm nên cũng chưa hiểu lắm ạ.
Vì sao "x/2*" và vì sao "x;*". Hai cái gần giống nhau nhưng cái thì không cần ";" cái thì phải cần ";" ạ
 

File đính kèm

  • Cong nha may T9-2018 (1).xlsx
    63.2 KB · Đọc: 11
Lần chỉnh sửa cuối:
Wow. Rất hay. Em cám ơn anh Hiệp nhé. Gọn hơn rất là nhiều ạ.
Anh có thể giải thích giúp em công thức để em hiểu hơn không ạ. Em mới làm nên cũng chưa hiểu lắm ạ.
Vì sao "x/2*" và vì sao "x;*". Hai cái gần giống nhau nhưng cái thì không cần ";" cái thì phải cần ";" ạ
Phân tích:
Công thức của bạn như sau:
=COUNTIF(D6:AH6,"x")+COUNTIF(D6:AH6,"x/2")*0.5+COUNTIF(D6:AH6,"1.5x")*1.5+COUNTIF(D6:AH6,"x;T")+COUNTIF(D6:AH6,"x;v")+COUNTIF(D6:AH6,"x;n")+COUNTIF(D6:AH6,"2x")*2+COUNTIF(D6:AH6,"x/2;T")*0.5+COUNTIF(D6:AH6,"x/2;v")*0.5+COUNTIF(D6:AH6,"x/2;n")*0.5+COUNTIF(D6:AH6,"x/2;T/2")*0.5+COUNTIF(D6:AH6,"x/2;v/2")*0.5+COUNTIF(D6:AH6,"x/2;n/2")*0.5+COUNTIF(D6:AH6,"x/2;1.5T")*0.5+COUNTIF(D6:AH6,"x/2*1.5v")*0.5+COUNTIF(D6:AH6,"x/2;1.5n")*0.5
Có thể thấy rằng:
  • Nhóm được tính là 0.5, gồm: COUNTIF(D6:AH6,"x/2")*0.5; COUNTIF(D6:AH6,"x/2;T")*0.5; COUNTIF(D6:AH6,"x/2;v")*0.5; COUNTIF(D6:AH6,"x/2;n")*0.5; COUNTIF(D6:AH6,"x/2;T/2")*0.5; COUNTIF(D6:AH6,"x/2;v/2")*0.5; COUNTIF(D6:AH6,"x/2;n/2")*0.5; COUNTIF(D6:AH6,"x/2;1.5T")*0.5; COUNTIF(D6:AH6,"x/2*1.5v")*0.5; COUNTIF(D6:AH6,"x/2;1.5n")*0.5. Nó có cấu trúc lệnh giống nhau chỗ COUNTIF(D6:AH6,"x/2.....")*0.5, hiểu rằng bạn chỉ xét 'đặc biệt' cho các trường hợp có ký tự là x/2 mà thôi, nên toàn bộ phía sau nó bạn có thể dùng ký tự đại diện là được rồi "x/2*"
  • Nhóm được tính là 1, gồm: COUNTIF(D6:AH6,"x"); COUNTIF(D6:AH6,"x;T"); COUNTIF(D6:AH6,"x;v"); COUNTIF(D6:AH6,"x;n"), tức bạn chỉ xét các trường hợp 'đặc biệt cho ký tự "x" đơn lẻ và có kết hợp các ký tự phía sau, cũng giống như trên, hễ nó ghép thì bạn dùng ký tự đại diện là được, nên nhớ "x"<>"x;*" (x có dấu ";" liền sau). Nếu bạn dùng chỉ "x*" thì nó sẽ đếm tất tần tật các ký tự ở nhóm 0.5 phía trên và ra kết quả "không mong đợi", riêng "x;*" sẽ hoàn toàn khác hẵn với "x/2*". Vì thế, phải dùng tách biệt cả hai ký tự "x" và "x;*" thì mới phân biệt được với nhóm tính là 0.5 ở trên.
  • Hai trường hợp còn lại được tính là 1.5 và 2 thì đơn giản hơn.
  • Dùng COUNTIF('Vùng so', 'Mảng so') sẽ tạo ra 1 Mảng sẽ có độ dài và chiều giống hoàn toàn như 'Mảng so', như trên bạn gom các ký tự cần tìm gộp vào chung 1 mảng chiều ngang như sau: {"x/2*","x","x;*","1.5x","2x"}, thì khi Countif() thực hiện nó sẽ trả ra kết quả, ví dụ đại khái là {0,3,20,2,0}, tức kết quả của các dạng ký tự:
    • "x/2*" =0
    • "x"=3
    • "x;*"=20
    • "1.5x"=2
    • "2x"=0
  • Công thức còn lại là: SUM( COUNTIF(D6:AH6,{"x/2*","x","x;*","1.5x","2x"}) * {0.5,1,1,1.5,2} ). Mảng {0.5,1,1,1.5,2} là các số nhân tương ứng với vị trí của Mảng ký tự cần tìm, ví dụ ứng với "x/2" bạn muốn nhân với 0.5, ứng với "2x" bạn muốn nhân với 2...
    • =>SUM( {0,3,20,2,0} * {0.5,1,1,1.5,2} )
    • =>SUM( {0,3,20,3,0})=26
Với các cột còn lại bạn cũng phân tích và làm tương tự.

Cứ nghiên cứu đi, hễ khó quá thì tính tiếp, nhưng tôi nghĩ sau khi hiểu rõ cách dùng ký tự đại diện rồi, thì bạn sẽ tự mình làm được.

Thân
 
Lần chỉnh sửa cuối:
Phân tích:
Công thức của bạn như sau:
=COUNTIF(D6:AH6,"x")+COUNTIF(D6:AH6,"x/2")*0.5+COUNTIF(D6:AH6,"1.5x")*1.5+COUNTIF(D6:AH6,"x;T")+COUNTIF(D6:AH6,"x;v")+COUNTIF(D6:AH6,"x;n")+COUNTIF(D6:AH6,"2x")*2+COUNTIF(D6:AH6,"x/2;T")*0.5+COUNTIF(D6:AH6,"x/2;v")*0.5+COUNTIF(D6:AH6,"x/2;n")*0.5+COUNTIF(D6:AH6,"x/2;T/2")*0.5+COUNTIF(D6:AH6,"x/2;v/2")*0.5+COUNTIF(D6:AH6,"x/2;n/2")*0.5+COUNTIF(D6:AH6,"x/2;1.5T")*0.5+COUNTIF(D6:AH6,"x/2*1.5v")*0.5+COUNTIF(D6:AH6,"x/2;1.5n")*0.5
Có thể thấy rằng:
  • Nhóm được tính là 0.5, gồm: COUNTIF(D6:AH6,"x/2")*0.5; COUNTIF(D6:AH6,"x/2;T")*0.5; COUNTIF(D6:AH6,"x/2;v")*0.5; COUNTIF(D6:AH6,"x/2;n")*0.5; COUNTIF(D6:AH6,"x/2;T/2")*0.5; COUNTIF(D6:AH6,"x/2;v/2")*0.5; COUNTIF(D6:AH6,"x/2;n/2")*0.5; COUNTIF(D6:AH6,"x/2;1.5T")*0.5; COUNTIF(D6:AH6,"x/2*1.5v")*0.5; COUNTIF(D6:AH6,"x/2;1.5n")*0.5. Nó có cấu trúc lệnh giống nhau chỗ COUNTIF(D6:AH6,"x/2.....")*0.5, hiểu rằng bạn chỉ xét 'đặc biệt' cho các trường hợp có ký tự là x/2 mà thôi, nên toàn bộ phía sau nó bạn có thể dùng ký tự đại diện là được rồi "x/2*"
  • Nhóm được tính là 1, gồm: COUNTIF(D6:AH6,"x"); COUNTIF(D6:AH6,"x;T"); COUNTIF(D6:AH6,"x;v"); COUNTIF(D6:AH6,"x;n"), tức bạn chỉ xét các trường hợp 'đặc biệt cho ký tự "x" đơn lẻ và có kết hợp các ký tự phía sau, cũng giống như trên, hễ nó ghép thì bạn dùng ký tự đại diện là được, nên nhớ "x"<>"x;*" (x có dấu ";" liền sau). Nếu bạn dùng chỉ "x*" thì nó sẽ đếm tất tần tật các ký tự ở nhóm 0.5 phía trên và ra kết quả "không mong đợi", riêng "x;*" sẽ hoàn toàn khác hẵn với "x/2*". Vì thế, phải dùng tách biệt cả hai ký tự "x" và "x;*" thì mới phân biệt được với nhóm tính là 0.5 ở trên.
  • Hai trường hợp còn lại được tính là 1.5 và 2 thì đơn giản hơn.
  • Dùng COUNTIF('Vùng so', 'Mảng so') sẽ tạo ra 1 Mảng sẽ có độ dài và chiều giống hoàn toàn như 'Mảng so', như trên bạn gom các ký tự cần tìm gộp vào chung 1 mảng chiều ngang như sau: {"x/2*","x","x;*","1.5x","2x"}, thì khi Countif() thực hiện nó sẽ trả ra kết quả, ví dụ đại khái là {0,3,20,2,0}, tức kết quả của các dạng ký tự:
    • "x/2*" =0
    • "x"=3
    • "x;*"=20
    • "1.5x"=2
    • "2x"=0
  • Công thức còn lại là: SUM( COUNTIF(D6:AH6,{"x/2*","x","x;*","1.5x","2x"}) * {0.5,1,1,1.5,2} ). Mảng {0.5,1,1,1.5,2} là các số nhân tương ứng với vị trí của Mảng ký tự cần tìm, ví dụ ứng với "x/2" bạn muốn nhân với 0.5, ứng với "2x" bạn muốn nhân với 2...
    • =>SUM( {0,3,20,2,0} * {0.5,1,1,1.5,2} )
    • =>SUM( {0,3,20,3,0})=26
Với các cột còn lại bạn cũng phân tích và làm tương tự.

Cứ nghiên cứu đi, hễ khó quá thì tính tiếp, nhưng tôi nghĩ sau khi hiểu rõ cách dùng ký tự đại diện rồi, thì bạn sẽ tự mình làm được.

Thân
Oh, em hiểu rồi anh Hiệp ơi.
em đã làm được rồi anh nhé.
Cám ơn anh rất nhiều ạ
 
Web KT
Back
Top Bottom