Xin hướng dẫn lập công thức tìm ngày công qui định trong tháng

Liên hệ QC

Người Đưa Tin

Hạt cát sông Hằng
Thành viên danh dự
Tham gia
12/12/06
Bài viết
3,661
Được thích
18,158
Xin Thầy/cô, anh chị dành chút thời gian hướng dẫn lập công thức nào để tìm ngày công qui định :

Thời gian chế độ làm việc của mỗi doanh nghiệp khác nhau. Giả sử có nơi làm 6 ngày/tuần, có nơi 5 ngày/tuần, có nơi 5 1/2 ngày/tuần. 8 giờ /1 ngày hay 7 giờ 1 ngày

Xin công thức cho 3 trường hợp dưới đây

Trường hợp 1 : Thời gian Chế độ làm việc ===> 6 ngày/tuần
Trường hợp 2 : Thời gian Chế độ làm việc ===> 5 ngày/tuần
Trường hợp 3 : Thời gian Chế độ làm việc ===> 5 1/2 ngày/tuần

Ngày công qui định = Tổng số ngày trong tháng - (trừ) Chế độ nghỉ ngơi các ngày chủ nhật (Không trừ các ngày lễ được hưởng lương) - trừ thời gian chế độ làm việc của mỗi doanh nghiệp

Đồng thời lập công thức tìm số giờ công qui định cho trường hợp trên để tính tiền ngoài giờ cho đúng.

Như trường hợp :
8 giờ/ 1 ngày, 7 giờ/1 ngày

Khuyết điểm của em là cứ bật lịch lên rồi xem trừ đi mấy ngày chủ nhật là OK ---> KTGG tệ sử dụng công thức quá!!!

Chân thành cám ơn
 
Gửi Bác hàm Ngaycong, dùng để đếm số ngày công làm việc theo điều kiện theo như yêu cầu của Bác. Tuy nhiên hàm này vẫn chưa tính được ngày nghỉ lễ nhằm ngày âm lịch. Muốn tính luôn cả ngày âm lịch thì phải có hàm chuyển đổi hỗ trợ thêm.
PHP:
Function NgayCong(Startday, Workday)
Dim i As Long, Curday As Date, d As Long
Application.Volatile (False)
For i = 0 To 31 - Day(Startday)
    Curday = Startday + i: d = Weekday(Curday)
    If Month(Curday) > Month(Startday) Then Exit For
    If Curday <> DateSerial(Year(Curday), 1, 1) And _
        Curday <> DateSerial(Year(Curday), 4, 30) And _
        Curday <> DateSerial(Year(Curday), 5, 1) And _
        Curday <> DateSerial(Year(Curday), 9, 2) And d <> 1 Then
        Select Case Workday
            Case 5: If d <> 7 Then NgayCong = NgayCong + 1
            Case 5.5: NgayCong = NgayCong + IIf(d = 7, 0.5, 1)
            Case 6: NgayCong = NgayCong + 1
        End Select
    End If
Next
End Function

Bác xem thêm trong file đính kèm nha.

Còn về tính số giở công thì con vẫn chưa hiểu ý Bác lắm. Bác có thể đưa 1 vài VD minh họa không ạh.
 

File đính kèm

Hàm tự tạo tính ngày làm việc trong tháng

PHP:
Option Explicit
Function WorkDays(Dat As Date, DayOffWeek As Double, Optional WorkTime As Byte = 8) As Double
 Dim Dat1 As Date:               Dim Jj As Byte, SoNgay As Byte
 
 Dat1 = DateSerial(Year(Dat), Month(Dat), 1)
 SoNgay = Day(DateSerial(Year(Dat), 1 + Month(Dat), 0))
 For Jj = 0 To SoNgay
   Select Case DayOffWeek
   Case 6
      If Weekday(Dat1 + Jj) <> 1 Then WorkDays = WorkDays + 1
   Case 5
      If Weekday(Dat1 + Jj) > 1 And Weekday(Dat1 + Jj) < 7 Then _
         WorkDays = WorkDays + 1
   Case Else
      If Weekday(Dat1 + Jj) = 1 Then
      ElseIf Weekday(Dat1 + Jj) = 7 Then
         WorkDays = WorkDays + 0.5
      Else
         WorkDays = WorkDays + 1
      End If
   End Select
 Next Jj
End Function

Ví dụ : =WorkDays(10/15/2009,6) trả về 27
=WorkDays(10/5/2009,5) trả về 22
& =WorkDays(10/25/2009,5.5) trả về 24.5
 
Muội đoán huynh Gân dùng cái này trong bảng chấm công thì phải, nên dùng 1 bảng chấm công để tính cho huynh Gân luôn. Muội cũng cù lần như huynh Gân vậy đó, hông biết VBA nên xài công thức thôi.

Cách xài:
Gõ tháng và năm vào 2 ô B1 và B2

Ngày nào lễ thì chấm công L cho nguyên cột công nhân viên.

Kết quả trong các ô màu xanh đọt chuối.

Tiện thể tô màu chủ nhật cho huynh màu tím hoa cà, tô màu thứ bảy màu mạ non luôn, tự động đó nhe.
 

File đính kèm

Lần chỉnh sửa cuối:
PHP:
Option Explicit
Function WorkDays(Dat As Date, DayOffWeek As Double, Optional WorkTime As Byte = 8) As Double
 Dim Dat1 As Date:               Dim Jj As Byte, SoNgay As Byte
 
 Dat1 = DateSerial(Year(Dat), Month(Dat), 1)
 SoNgay = Day(DateSerial(Year(Dat), 1 + Month(Dat), 0))
 For Jj = 0 To SoNgay
   Select Case DayOffWeek
   Case 6
      If Weekday(Dat1 + Jj) <> 1 Then WorkDays = WorkDays + 1
   Case 5
      If Weekday(Dat1 + Jj) > 1 And Weekday(Dat1 + Jj) < 7 Then _
         WorkDays = WorkDays + 1
   Case Else
      If Weekday(Dat1 + Jj) = 1 Then
      ElseIf Weekday(Dat1 + Jj) = 7 Then
         WorkDays = WorkDays + 0.5
      Else
         WorkDays = WorkDays + 1
      End If
   End Select
 Next Jj
End Function

Ví dụ : =WorkDays(10/15/2009,6) trả về 27
=WorkDays(10/5/2009,5) trả về 22
& =WorkDays(10/25/2009,5.5) trả về 24.5

Em nghĩ có lẽ hàm của Bác SA_DQ bị bỏ sót mấy ngày nghỉ lễ dương lịch như 02/09/2009...
Với lại nếu các tham số trong hàm không có gì thì kết quả vẫn là một số khác không.
 
Em nghĩ hàm của Bác SA_DQ bị (1) bỏ sót mấy ngày nghỉ lễ dương lịch như 02/09/2009...
Với lại (2) nếu các tham số trong hàm không có gì thì kết quả vẫn là một số khác không.

(1)
Ngày công qui định = Tổng số ngày trong tháng - (trừ) Chế độ nghỉ ngơi các ngày chủ nhật (Không trừ các ngày lễ được hưởng lương) - trừ thời gian chế độ làm việc của mỗi doanh nghiệp
Nên mình nghĩ là phải vậy, không biết í tác giả thế nào?!?

(2) . . . . . (Để mở 1 khoảng cho Già gân tung hoành í mà!)

To GG: Sao không phát biểu về vấn đề giờ làm việc trong ngày zì cả vậy; Chỉ toàn đi cảm ơn không thôi, là sao?
 
Em chân thành cám ơn Thầy/cô hướng dẫn công thức cho em thiết lập bảng chấm công, bảng lương.

Nhân đây cho em hỏi nhanh Cô Ngọc Mai, giả sử trong bảng chấm công tháng 10/2009 sẽ xuất hiện chữ L có phải là ngày lễ như ý Cô trình bày không? Hay là chữ L - ý là chấm công ngày làm việc.

Còn cột B8 và C8 dụng ý để làm gì, em chưa hiểu công dụng của hai cột này

attachment.php



Bảng chấm công mẫu của Cô thiết lập gởi tặng, em có thể vận dụng phát huy thành lập 1 bảng chấm công ngoài giờ riêng được hông? Bảng chấm công ngoài giờ sẽ chấm theo số giờ. Ngày thường - Ngày lễ

Em lúng túng không biết cách thiết lập bảng chấm công sao cho phù hợp với các tình trạng như bài : Cách tính lương tăng ca ngày thường, ngày nghỉ hằng tuần,ngày lễ/Tết - http://www.giaiphapexcel.com/forum/showthread.php?t=20218

Làm thế nào để ghi nhận cho các trường hợp

Ví dụ : Làm tăng ca đêm (được trả thêm ít nhất bằng 30% tiền lương tính theo đơn giá tiền lương hoặc tiền lương của công việc đang làm vào ban ngày)
+ Ngày thường : 150% x (nhân) 1.3 = 195%
+ Ngày nghỉ hằng tuần : 200% x (nhân) 1.3 = 260% (giả sử cơ quan 1 tuần làm 5 ngày thì ngày nghỉ hằng tuần sẽ là : thứ 7 và chủ nhật)
+ Các ngày lễ/Tết (ngày nghỉ được hưởng lương) : 300% x (nhân) 1.3 = 390%

Trường hợp không rơi vào các giờ ban đêm theo quy định thì tính bình thường 150%, 200% hoặc 300% theo từng trường hợp ngày làm thêm.

Khi tính thuế TNCN phải loại trử các khoản tiền làm thêm giờ này ra.(Thu nhập được miễn thuế)

Có lần em trao đổi riêng với Thầy Mỹ (ptm0412) về các vấn đề trên - nhằm giúp người làm lương lập bảng lương sao cho nó đúng và phù hợp với Luật thuế TNCN hiện hành.

Chân thành cám ơn
 

File đính kèm

  • Cô Ngọc Mai.JPG
    Cô Ngọc Mai.JPG
    127.3 KB · Đọc: 97
(1) Nên mình nghĩ là phải vậy, không biết í tác giả thế nào?!?

(2) . . . . . (Để mở 1 khoảng cho Già gân tung hoành í mà!)

To GG: Sao không phát biểu về vấn đề giờ làm việc trong ngày zì cả vậy; Chỉ toàn đi cảm ơn không thôi, là sao?

Dạ thưa Thầy, em đang nghiên cứu từng bảng của Quý Thầy hướng dẫn cho em.
Em đang xem từng vấn đề của Quý Thầy trình bày - và hiện em có nêu 1 số vướng mắc để giúp người làm lương sao cho nó đúng trong các tình huống tăng ca,...và phù hợp với luật thuế TNCN hiện hành.
 
Tán đồng với GG

Dạ, đang nghiên cứu từng bảng hướng dẫn
Em đang xem từng vấn đề của Quý Thầy trình bày - và hiện em có nêu 1 số vướng mắc để giúp người làm lương sao cho nó đúng trong các tình huống tăng ca,...và phù hợp với luật thuế TNCN hiện hành.
Theo mình, phải đi từ đơn giản đến phức tạp; Chẳng hạn:

(1) Cách tính ngày công làm việc trong tháng cho 3 trường hợp đã nêu;

(2) Sau đó lấy 1 trong ba trường hợp, cho là thịnh hành nhứt đem làm chấm & tính công thêm giớ
+ Thêm giờ ngày thường;
+ Ngày lễ;
+ Ngày chủ nhựt;
+ Thêm giờ ca ba, . . .
Chỉ từ điển hình này ta mới may ra gôm thành trường hợp tổng quát cho mọi loại hình chấm công

(Lúc đó GG mới có thể dùng để chuyển giao cho em, con cháu được, Khà khà, . . . )
:-= --=0 :-=
 
Đây là 1 file của 1 vị Thầy trên GPE hướng dẫn trực tuyến cho em

|
A​
|
B​
|
C​
|
D​
|
E​
|
F​
|
G​
|
H​
|
1​
|
Ngày Đầu tháng​
|
Ngày cuối tháng​
|
Số ngày trong tháng​
|
Số ngày Chủ nhật trong tháng​
|
Số ngày Thứ 7 trong tháng​
|
Số ngày trong tháng làm việc​
|
|
|
2​
| | | | | |
Làm 6 ngày​
|
Làm 5 ngày​
|
Làm 5,5 ngày​
|
3​
|
01/11/2009​
|
30/11/2009​
|
30​
|
5​
|
4​
|
25​
|
21​
|
23​
|

C3=$B3-$A3+1
D3=INT(($B3-$A3-WEEKDAY($B3-6,2)+8)/7)
E3=INT(($B3-$A3-WEEKDAY($B3-5,2)+8)/7)
F3=C3-D3
G3=C3-D3-E3
H3=C3-D3-E3/2
 
Theo mình, phải đi từ đơn giản đến phức tạp; Chẳng hạn:

(1) Cách tính ngày công làm việc trong tháng cho 3 trường hợp đã nêu;

(2) Sau đó lấy 1 trong ba trường hợp, cho là thịnh hành nhứt đem làm chấm & tính công thêm giớ
+ Thêm giờ ngày thường;
+ Ngày lễ;
+ Ngày chủ nhựt;
+ Thêm giờ ca ba, . . .
Chỉ từ điển hình này ta mới may ra gôm thành trường hợp tổng quát cho mọi loại hình chấm công

(Lúc đó GG mới có thể dùng để chuyển giao cho em, con cháu được, Khà khà, . . . )
:-= --=0 :-=

Em cũng đồng ý với ý kiến của Thầy - chính vì vậy, em mới đặt hàng/đặt vấn đề từng bước từ cách đơn giản đến tổng hợp để nhiều thành viên chưa biết gì về lập bảng lương để cùng học chung luôn thể.

Em xin cám ơn lời nhận xét của Thầy : tất yếu phải có các giải pháp từ cơ bản đơn giản rồi tổng hợp lại 1 bảng lương, 1 bảng chấm công cho hoàn chỉnh hơn.

Vấn đề em nêu và mong quý Thầy hỗ trợ không chỉ riêng cho em mà em muốn tập hợp các bài toán này để chuyển giao công nghệ cho các thành viên webketoan chuyên làm lương để cùng học tập luôn thể.

Thay mặt các thành viên của hai diễn đàn giaiphapexcel.com và webketoan.vn - Kính chuyển lời cám ơn Quý Thầy/cô đã quan tâm và hỗ trợ hướng dẫn từng bước cho đề tài này.
 
Nhân đây cho em hỏi nhanh Cô Ngọc Mai, giả sử trong bảng chấm công tháng 10/2009 sẽ xuất hiện chữ L có phải là ngày lễ như ý Cô trình bày không? Hay là chữ L - ý là chấm công ngày làm việc.
Còn cột B8 và C8 dụng ý để làm gì, em chưa hiểu công dụng của hai cột này

Huynh ơi, dùng công thức và VBA tính ra ngày lễ, hiện giờ là mối quan tâm của cả GPE. Giải pháp cũng đã có nhưng hiện chưa có biện pháp nào khả dĩ kết hợp với bảng chấm công được. Lý do là nếu ngày lễ thí dụ 2/9 rơi vào ngày nghỉ (thứ bảy, chủ nhật) thì nghỉ bù vào thứ 2, Yes? Mà nghỉ bù thứ 2 thì chả có biện pháp đơn giản nào để tính rằng 3/9 hay 4/9 là ngày lễ được. D' accord?

Nên ngày lễ phải chấm công bằng tay, thí dụ như "L" trong file của muội. File của muội được cái là hễ chấm công "L" 1 cái là nó tự trừ ra, không phải ngày công quy định.
Huynh đổi qua tháng 10 thì tháng 10 đâu có ngày lễ? Huynh phải chấm công làm việc cho ngày 2/10 chứ?

B8 và C8 là cái gì huynh tự thêm vô, giả sử bộ phận hoặc chức vụ, ... Nếu không thích thì huynh xóa cột đi.

Hiện giờ công thức tính số giờ ô C4, C5, C6 = số ngày nhân 8, nếu huynh áp dụng cho DN làm việc 7 giờ thì sửa lại. Hoặc huynh thêm 1 ô ghi số giờ quy định 1 ngày làm việc, ô C4, C5, C6 nhân với ô này. Ô số giờ đó sẽ xài cho việc khác như sau:

1. Chấm công = số giờ

2. So sánh số giờ đó với ô giờ quy định để tính giờ làm thêm:

- Nếu ngày thường nhân với x
- nếu ngày thứ 7 hoặc CN thì nhân với y
- nếu ngày lễ thì nhân với z,
- nếu ca 3 thì nhân với t

Như vậy sẽ phải quy ước lại cách chấm công:

thí dụ: L12C2 hoặc 08C3

Có chữ L là lễ, 08 hoặc 12 là số giờ, Ci là ca làm việc.

sau này sẽ dùng công thức tách chúng nó ra mà xử Huynh à. Để muội nói ông lão nhà muội giúp muội cái công thức đó rồi gởi cho Huynh, topic khác nha, gởi trong topic này là lạc đề.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sư nương Ngocmaipretty thân yêu của già gân,
Sư nương sao viết chính tả (d'accord),... mà để Thầy Mỹ vào sửa vậy chời! Chắc sư nương, mắt yếu và tay lại rung giống KTGG nữa chăng? Ấy đừng thế nhe! Cái gì tốt thì theo con xấu mình nhớ chừa ra chứ.

Như thế này, cho KTGG đặt hàng với sư nương về các giải pháp trên nhe. Hôm nào, tiện KTGG sẽ đến thăm và hậu tạ cùng sư nương 1 chầu kem tại Hồ con rùa cho thơ mộng được chứ.
 
Cái này bác Trí khi nào file hoàn thiện bác chia sẻ với, cảm ơn bác nhiều
 
Web KT

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

Back
Top Bottom