Cách tô màu trong bảng chấm công

Trong các bài viết về hướng dẫn tạo bảng chấm công trên Excel trước đây, Học Excel Online đã giới thiệu tới các bạn cách sử dụng chức năng Conditional formatting để tự động phân biệt ngày lễ, ngày chủ nhật trong tháng một cách tự động. Tuy nhiên đó là dạng bảng chấm công mà mỗi ngày chỉ có 1 cột. Nhưng trong một số trường hợp yêu cầu chấm công phức tạp hơn thì đôi khi chúng ta phải sử dụng nhiều hơn 1 cột cho 1 ngày. Ví dụ như 1 ngày bao gồm vừa chấm công giờ làm chính, vừa chấm công giờ làm thêm thì cần 2 cột thể hiện 2 loại giờ công này. Vậy chúng ta hãy cùng tìm hiểu xem cách làm thế nào để tự động phân biệt ngày lễ, ngày chủ nhật trong bảng chấm công mỗi ngày có 2 cột nhé:

1. Mẫu bảng chấm công mỗi ngày có 2 cột

Chúng ta có mẫu bảng chấm công như sau:

Trong bảng chấm công này đã xác định:

  • Ngày trong tháng: Mỗi khi thay đổi số tháng hoặc số năm thì ngày trong tháng sẽ tự động thay đổi theo [dòng 7]
  • Thứ trong tuần: Khi ngày thay đổi thì thứ tương ứng với ngày đó cũng thay đổi theo [dòng 8]
  • Loại ngày: Phân biệt ngày trong tuần là ngày chủ nhật hay ngày lễ [dòng 9]
  • Hai cột chấm công trong mỗi 1 ngày là C [công hành chính] và T [công làm thêm] [dòng 10]

Tất cả những nội dung này đã được hướng dẫn trong bài: Hướng dẫn cách lập bảng chấm công bộ phận hành chính

Các bạn có thể tải về mẫu bảng chấm công này tại địa chỉ: //bit.ly/2ljvVwg

Mục đích của chúng ta trong bài viết này đó là tự động định dạng để phân biệt ngày chủ nhật, ngày lễ trong tháng bằng chức năng Conditional Formatting.

2. Thiết lập dòng loại ngày một cách chính xác

Trong bảng chấm công trên, dòng loại ngày [dòng 9] về mặt công thức là đúng, nhưng về cách trình bày lại chưa chính xác: Bởi việc sử dụng merge cell trong mỗi 1 ngày như vậy sẽ không thể áp dụng được Conditional Formatting một cách chính xác được.

Cách khắc phục như sau:

a. Bỏ chức năng Merge cell tại dòng 9

Các bạn chọn toàn bộ dòng 9, từ cột D tới cột BM [trong phạm vi các ngày trong tháng] và bấm vào Merge cell trên thẻ Home để bỏ đi chức năng Merge cell đang áp dụng tại đây

b. Thay đổi công thức xác định loại ngày:

Tại ngày đầu tiên của tháng, ô D9 có công thức:

D9=IF[D7=””,””,IF[COUNTIF[$B$32:$B$42,D7]>0,3,IF[D8=”CN”,2,1]]]

Nội dung công thức:

  • Nếu D7 là rỗng [tức không có ngày] thì kết quả là rỗng để tránh lỗi
  • Nếu D7 nằm trong vùng B32:B42 [danh sách ngày lễ] thì kết quả là 3 [mã kí hiệu loại ngày là ngày lễ]
  • Nếu D8 là CN [ngày chủ nhật] thì kết quả là 2 [mã kí hiệu loại ngày là ngày chủ nhật]
  • Còn lại không phải các trường hợp trên thì là 1 [mã kí hiệu loại ngày là ngày thường]

Công thức này đã đúng.

Nhưng trong ngày 01 có 2 cột, nên tại vị trí E9 cũng cần có công thức xác định loại ngày. Do đó tại E9 chúng ta sẽ viết lại chính công thức tại D9, hay có thể dùng E9=D9

Sau đó chọn cả hai ô D9 và E9 rồi Fillright [copy công thức sang phải] với cả 2 ô này. Thao tác như sau:

Như vậy kết quả cuối cùng chúng ta thu được sẽ là:

3. Thiết lập Conditional Formatting để tự động phân biệt loại ngày

Khi đã xong bước 2 rồi thì việc thiết lập Conditional Formatting lại trở nên rất dễ dàng. Chúng ta chỉ cần đặt 2 lần [2 rule] tương ứng với loại ngày Chủ nhật và loại ngày Lễ. Cách làm như sau:

a. Tự động phân biệt ngày lễ

Vì ngày lễ được ưu tiên hơn so với ngày chủ nhật nên sẽ thực hiện trước.

  • Trong Conditional Formatting chọn New Rules
  • Trong cửa sổ New Formatting Rule chọn Use a formula…
  • Nhập công thức =D$9=3 [xét mỗi giá trị ở dòng 9, bắt đầu từ cột D tới cột BM có bằng 3 hay không]

Kết quả thu được là:

b. Tự động phân biệt ngày chủ nhật

Tương tự như ngày lễ, nhưng công thức của chúng ta là =D$9=2

Kết quả cuối cùng là:

Như vậy là chúng ta đã hoàn thành yêu cầu tự động phân biệt ngày chủ nhật và ngày lễ trong bảng chấm công 2 cột mỗi ngày rồi. Chúc các bạn thành công!

Tải về file kết quả tại địa chỉ: //bit.ly/2t8uipO

Ngoài ra còn rất nhiều kiến thức bổ ích khác nữa mà bạn có thể học được trong khóa học: HCNS101-Trọn bộ kỹ năng Hành chính nhân sự. Đây là khóa học rất hữu ích và giúp bạn nắm bắt được đầy đủ kiến thức, xây dựng những kỹ năng cần thiết để hoàn thành tốt công việc. Chi tiết xem tại:

Tạo bảng chấm công bằng Excel giúp chúng ta chuyên nghiệp hóa được công việc quản trị nhân lực. Đồng thời hệ thống này cũng giúp lưu trữ tôt và hoạt động trơn tru hơn so với truyền thống. Học Excel Online sẽ hướng dẫn bạn tạo bảng chấm công bằng Excel vô cùng đơn giản

Trước khi lập 1 file excel, bạn nên tưởng tượng, hình dung ra trước xem file bảng chấm công gồm những gì, bao nhiêu sheet, nội dung như thế nào, cách hoạt động ra sao…? Khi trả lời được các câu hỏi thì bạn càng biết rõ cách làm trên excel để có kết quả như ý muốn.
Tôi sẽ hướng dẫn cách lập 1 mô hình bảng chấm công ví dụ như sau:

  • Gồm 13 sheet, mỗi sheet là 1 tháng và 1 sheet làm danh sách nhân viên
  • Trung bình mỗi tháng là 20 nhân viên
  • Ký hiệu chấm công có thể thay đổi được tùy người sử dụng [mỗi người có thể chấm 1 kiểu ký hiệu, nhưng sẽ đồng nhất trong 12 tháng]
  • Trong mỗi bảng chấm công có ghi rõ ngày, thứ trong tháng. Vào thứ 7 và chủ nhật thì tự đổi màu khác so với ngày thường.
  • Hàng ngày sẽ chấm công vào các ngày trong tháng. Cuối tháng sẽ tự tính số tổng số công trong tháng.
  • Tên nhân viên trong bảng chấm công sẽ lấy từ danh sách nhân viên
  • Có thể liên kết giữa các tháng với nhau để dễ thao tác.

Về mô hình là 13 sheet, nhưng khi bắt đầu làm ta chỉ cần 2 sheet:

+ 1 sheet là Danh sách nhân viên [DSNV]

+ 1 sheet là Tháng 1 [làm hoàn chỉnh cho 1 tháng, các tháng sau có thể copy sheet này rồi đổi tên]

Sheet Danh sách nhân viên:

Nội dung chủ yếu trong sheet này là Tên và Mã nhân viên. Cần tạo mã nhân viên vì có thể có trường hợp trùng tên. Khi quản lý theo mã sẽ tránh trường hợp bị trùng.

Ngoài ra còn có các nội dung khác liên quan tới nhân viên, như: ngày sinh, quê quán, số CMT, ngày vào làm…
Bạn có thể tạo như sau:

+ Cột E [ngày sinh], bạn bôi đen cả cột [đưa con trỏ chuột vào vị trí trên cùng của cột – chữ E, bấm chọn cả cột], bạn định dạng Format cell/Number/Custome/ chọn dd-mm-yyyy . Tác dụng: khi bạn nhập bất kỳ dữ liệu kiểu ngày tháng vào cột này sẽ tự động đưa về dạng dd-mm-yyyy [01-01-2014]

Sheet danh sách nhân viên hầu hết là nhập bằng tay nên không có gì phức tạp.
Lưu ý: bạn chừa ra khoảng 2-3 dòng trên cùng để tạo liên kết tới các sheet khác. Bên trái cách ra 1 cột để dự phòng nếu cần bổ sung gì thêm.

Sheet Tháng 1

Đầu tiên bạn tạo khung cho bảng chấm công, gồm các nội dung: tiêu đề – bảng chấm công, tháng, bộ phận chấm công, định mức ngày công trong tháng, các cột gồm: mã nhân viên, tên nhân viên, ngày trong tháng [31 cột tương ứng với 31 ngày – số ngày lớn nhất của 1 tháng], 4-5 cột tính quy ra công, 1 cột để ghi chú

Tiếp sau đó bạn co độ rộng của các cột sao cho gọn và dễ nhìn. Các cột ngày trong tháng có thể co lại nhỏ vừa đủ để chấm công thôi. Cột quy ra công cũng không cần rộng lắm. Chủ yếu cột tên và mã nhân viên hiển thị đủ là được.

Cách co độ rộng: bạn bôi đen các cột ngày trong tháng, quy ra công [trong ví dụ là bôi đen từ cột E đến cột AM], sau đó co độ rộng ở cột E khoảng 30 pixels [hoặc bôi đen từ cột E đến cột AM, sau đó bấm chọn command Column Width, chọn 3,13 tương ứng 30 pixels]

Vậy là bạn đã làm xong phần khung của Bảng chấm công. Tiếp theo ta sẽ thực hiện thao tác chọn ngày tháng của bảng chấm công.

Tạo ngày tháng trong bảng chấm công

– Đầu tiên ta xác định năm sử dụng. Tại ô D1 nhập giá trị của năm. Ví dụ năm 2014

– Tại ô B4 [xác định tháng chấm công], ta nhập hàm xác định ngày: =date[$D$1;1;1] Lưu ý dấu ngăn cách các thành phần trong hàm có thể là dấu ; hoặc dấu , tùy thiết lập của máy tính. Ở máy tính của tôi sử dụng dấu ;

Nội dung hàm date: xác định giá trị của ngày tháng theo giá trị xác định trong hàm. giá trị theo thứ tự là Năm, tháng, ngày. Ở hàm trên là Năm = giá trị tại ô D1, Tháng = 1, Ngày = 1

– Sau khi nhập hàm xong, tại ô B4, chọn format cell / custom / nhập giá trị [“tháng “mm” năm “yyyy] vào ô Type bên phải, xong rồi ấn ok [dấu nháy kép + tháng + dấu cách + dấu nháy kép + mm + dấu nháy kép + năm + dấu cách + dấu nháy kép + yyyy]

Xem thêm: Định dạng ngày tháng trong Excel

– Bạn có thể marge cell từ ô B4 đến D4 để cho hiển thị đủ nội dung cho dễ nhìn.

– Tại ô ngày 1 [ ô E9], bạn nhập =b4 để xác định ngày đầu tiên trong tháng.

– Tại ô F9, bạn nhập =e9+1 [ngày tiếp theo trong tháng]

– Copy công thức tại ô F9 sang các ô bên cạnh, cho đến ô ngày thứ 31 [ô AI9] bằng cách sau:

  • Cách 1: Bôi đen từ ô F9 đến ô AI9, bấm Ctrl + R
  • Cách 2: Bấm chuột vào ô F9, giữ chuột tại vị trí dấu chấm đen trong ô để con trỏ chuột trở thành dấu +, kéo chuột tới ô AI9 rồi thả ra

– Bôi đen từ ô E9 đến ô AI9, chọn Format cells / custom / mục Type bạn gõ chữ dd rồi bấm ok [chỉ hiện thị số ngày]
Nội dung trong ô E9 đến ô AI9 sẽ hiển thị ra ngày như trong bảng trên.

– Tại ô E10 nhập hàm =CHOOSE[WEEKDAY[E9];”Chủ nhật”;”T. hai”;”T. ba”;”T. tư”;”T. năm”;”T. sáu”;”T. bảy”]

Nội dung hàm:

  • Weekday[e9] : là lấy giá trị ngày trong tuần của ô E9. Nếu nội dung trong hàm weekday không có đặt quy định về thứ tự ngày trong tuần thì sẽ tự trả về theo thứ tự Chủ nhật, thứ hai, thứ 3… thứ 7 [Bắt đầu là chủ nhật, kết thúc là thứ 7], và trả về giá trị số từ 1 đến 8
  • Choose: là hàm chọn giá trị trả về. Giá trị đầu tiên trong hàm là giá trị được chọn để làm căn cứ xác định. Các giá trị tiếp theo là nội dung được trả về tương ứng theo giá trị đầu tiên.

Trong hàm trên, ngày 01/01/2014 khi dùng hàm weekday sẽ trả về giá trị là 4, khi dùng hàm choose với thứ tự tương ứng là Chủ nhật, thứ hai, thứ ba… thứ bảy thì giá trị 4 sẽ tương ứng với thứ tư. Bởi vì hàm weekday không tự trả về thứ theo tiếng việt, nên ta phải kết hợp với hàm choose để có được nội dung là thứ mấy trong tuần

– Copy công thức tại ô E10 sang các ô kế tiếp bên phải, cho tới ô AI10 [ngày thứ 31]

Tuy nhiên không phải tháng nào cũng có 31 ngày, nên để tránh việc hiển thị các ngày của tháng khác vào tháng này, ta thực hiện các thao tác sau: + Bắt đầu từ ngày thứ 29 [ô AG9], ta điều chỉnh về hàm như sau: =IF[DAY[AF9+1]=DAY[E9];””;AF9+1]

Nội dung hàm: Nếu giá trị ngày của ô AF9 +1 bằng giá trị ngày của ô E9 sẽ trả về giá trị là rỗng, nếu không bằng thì sẽ trả về giá trị ô AF9 + 1 [Nghĩa là nếu tháng 2 có 28 ngày, thì ngày thứ 29 sẽ là ngày 01/03, vậy giá trị ngày là 1, bằng với giá trị ngày của ô E9, nếu đúng như thế thì sẽ là rỗng, không hiển thị ngày 01/03. Còn nếu tháng 2 đó có 29 ngày thì sẽ hiện ngày 29]

+ Tại ô AH9, ta dùng hàm sau: =IF[AG9=””;””;if[DAY[AG9+1]=DAY[E9];””;AG9+1]]
Nội dung hàm:

  • IF thứ 1: Nếu tại ô AG9 là giá trị rỗng, thì ô AH9 cũng sẽ có giá trị rỗng [tức là vào trường hợp tháng 2 có 28 ngày thì sẽ không có ngày thứ 30]
  • IF thứ 2: tương tự với hàm if tại ô AG9, tức là trường hợp tháng 2 có 29 ngày, thì sẽ không hiển thị ngày 30.

+ Tại ô AI9, ta dùng hàm sau: =IF[AH9=””;””;if[DAY[AH9+1]=DAY[E9];””;AH9+1]]

Nội dung hàm:

  • IF thứ 1: Nếu AH9 là giá trị rỗng, thì AI9 cũng sẽ có giá trị rỗng [tức là trường hợp không có ngày thứ 30 thì cũng không có ngày thứ 31]
  • IF thứ 2: trường hợp tháng chỉ có 30 ngày thì sẽ không có ngày thứ 31

+ Khi các ô AG9, AH9, AI9 là rỗng thì hàm choose ở các ô AG10, AH10, AI10 sẽ phát sinh lỗi. Nhưng không ảnh hưởng gì đến bảng tính nên không cần lo lắng về việc này.

Như vậy ta đã thực hiện được phần các ngày trong tháng, và các thứ trong tuần.

Tiếp theo là việc tự động đổi màu cho các ngày thứ 7, chủ nhật cho khác với ngày thường

+ Bôi đen nội dung trong bảng [Từ E9 đến AI30 – tức là tất cả các nội dung về ngày trong tháng lẫn phần chấm công của các nhân viên], chọn chức năng Conditional Formatting [định dạng theo điều kiện], trong mục Condittional Formatting, chọn New Rule.

Trong bảng New Formatting Rule, bạn chọn dòng cuối cùng trong mục Select a Rule Type là Use a formula to determine which cells to format [Dùng công thức để mô tả cách định dạng cells]

+ Tại mục Format values where this formula is true, ta nhập hàm

=if[weekday[e$9]=1;true;false]

Nội dung hàm: Nếu ngày trong tuần tại ô e9 là 1 [tức là chủ nhật] thì là đúng, không thì sẽ sai. Nếu dúng thì sẽ áp dụng định dạng của Conditional formatting. Đặt dấu cố định e$9 là cố định hàng 9, tính từ cột e.

+ Sau khi đặt hàm, ta thiết lập định dạng cho CF. Trong bảng định dạng, bạn có thể chọn font chữ, màu chữ tại Font, màu nền tại Fill, kẻ đường viền ô tại Border… [giống định dạng ô của Format cells thông thường]. Chọn định dạng xong bấm ok.

Kết quả khi thực hiện Conditional formatting với điều kiện ngày chủ nhật.

+ Làm tương tự với định dạng ngày thứ 7:

Bôi đen vùng trong bảng, chọn chức năng Conditional Formatting/ New rule/ Use a formulas…, nhập hàm =if[weekday[e$9]=7;true;false] , chọn kiểu định dạng cho ngày thứ 7

Kết quả khi thực hiện định dạng thứ 7 và chủ nhật

+ Thiết lập định dạng cho các cột không chứa giá trị ngày [ví dụ tháng 2 có 28 ngày, tự động bôi đen các ngày trống để phân biệt]

Bước 1: Tại ô B4, sửa tạm giá trị tháng là 2 để làm thử

Bước 2: Bôi đen vùng trong bảng, chọn chức năng Conditional formatting / new rule / use a formulas…, nhập hàm =if[e$9=””;true;false], chọn định dạng là tô màu xám cho chữ và nền, ta có kết quả như sau:

Khi làm xong nhớ trả lại giá trị tháng 1 ở ô B4 nhé.

Phù, vậy là xong phần thiết lập ngày tháng cho bảng chấm công. Giờ còn khâu cuối cùng là đặt ký hiệu chấm công nữa là xong.

Đặt ký hiệu chấm công

+ Bạn chọn 1 vài ký hiệu chấm công cho 1 số loại công như sau:

  • Ngày công thực tế [đi làm đủ số công]:
  • Nửa ngày công [làm nửa ca, nửa ngày…]
  • Ngày nghỉ hưởng nguyên lương [đi học, họp, phép… nghỉ mà có lương]
  • Nghỉ không lương

…. [tùy đơn vị mà chọn các hình thức chấm công khác nhau]

Lưu ý mỗi kí hiệu chấm công sẽ tương ứng với 1 cột quy ra công [hoặc có thể gộp], ngoài ra thêm 1 cột tính tổng số công

Tại ví dụ tôi đặt như sau:

  • Ngày công thực tế: x
  • Nửa ngày công : v
  • Ngày nghỉ hưởng nguyên lương: P
  • Nghỉ không lương: K
  • Ốm đau, thai sản: O

Hàm, công thức tính công

Tại cột Ngày công thực tế [cột AJ], tại ô AJ11, đặt hàm sau:

=COUNTIF[$E11:$AI11;$G$34]

Nội dung hàm: Đếm số lần xuất hiện của giá trị tại ô G34, trong vùng E11 đến AI11. Giá trị tại ô G34 là ký hiệu chấm công của ngày công đủ, vùng E11 đến AI11 là số ngày công trong tháng của người đầu tiên [hàng 11], cố định cột E và AI để khi copy công thức không bị ảnh hưởng tới vùng chấm công

Tương tự với các cột khác, ta đặt công thức:

  • Ô AK11 [Nửa công] = countif[$E11:$AI11;$G$35]
  • Ô AL11 [Nghỉ hưởng lương] = countif[$E11:$AI11;$G$36]
  • Ô AM11 [nghỉ không lương] = countif[$E11:$AI11;$G$37]
  • Ô AN11 [ốm đau, thai sản] = countif[$E11:$AI11;$G$38]

Tổng số công sẽ tính tùy theo yêu cầu tính công của đơn vị. Ví dụ: tổng ngày công = Ngày công thực tế + Nửa công x 0,5 + Nghỉ hưởng lương + Ốm đau, thai sản

Ô AO11 = AJ11+AK11*0,5+AL11+AN11

Sau khi đặt công thức xong, ta copy công thức xuống cho các nhân viên khác

Khi hoàn thiện sẽ có như sau:

Như vậy là đã hoàn thiện xong việc chấm công, tạo ký hiệu và tính số công. Giờ bạn có thể kiểm tra công thức bằng cách chấm thử vài ký hiệu vào bảng để kiểm tra.

Như vậy là ta đã hoàn chỉnh xong bảng chấm công của tháng 1. Giờ chỉ còn việc copy ra các tháng còn lại.

Ngoài việc chấm công, chúng ta còn cần phải làm những công việc khác liên quan tới tiền lương, bảo hiểm, thuế TNCN… Để nắm được những kiến thức và cách ứng dụng Excel trong công việc hành chính-nhân sự, mời bạn tham gia khóa học Hành chính nhân sự từ A-Z của Học Excel Online. Bật mí là bạn còn được tặng kèm phần mềm quản lý nhân sự khi tham gia khóa học này nhé. À quên, bạn có thể tải về file excel theo dõi nghỉ phép khi tham gia khóa học nữa. Chi tiết xem tại: Học Excel Online

Video liên quan

Chủ Đề