cách tính ngày tháng năm có cộng ngày nghỉ, lễ, nghỉ bù

Liên hệ QC

accboyde

Thành viên mới
Tham gia
12/4/10
Bài viết
5
Được thích
0
các bạn giúp mình với: các bạn lập công thức tính giúp mình với yêu cầu như sau:
VD: (ngày, tháng, năm) hiện tại + 10 (số 10 được hiểu là số ngày làm việc từ t2 đến t6) = (ngày, tháng, năm) tiếp theo đã được cộng ngày t7,cn,ngày lễ, nghỉ bù)
rất mong các bạn sơm giúp mình. Cảm ơn các bạn rất nhiều-+*/
 
Bạn nói rõ được hơn không, đọc thấy khó hiểu ghê!
 
Bạn nói rõ được hơn không, đọc thấy khó hiểu ghê!

mình muốn
VD: (1) Ngày hiện tại là: 4/20/2010
(2) Số ngày làm việc muốn cộng là: 10
(3) Ngày tiếp theo đã cộng các ngày T7, CN, 30/4, 1/5, nghỉ bù ngày 1/5 là: 5/5/2010
Như thế là từ ngày 04/20/2010 đến ngày 5/5/2010 chỉ có 10 ngày làm việc. Còn tổng ngày kể cả ngày nghỉ là 16 ngày.
Rất mong các bạn lập công thức tính giùm mình để khi chỉ cần nhập số ngày làm việc muốn cộng là ra ngày cuối đã cộng các ngày nghỉ, lễ, nghỉ bù.
Thank all!
 
Lần chỉnh sửa cuối:
Bạn thử lại bằng hàm tự tạo sau:

PHP:
Option Explicit

Function SoNgayLamViec(Dat As Date, NumDat As Byte)
 On Error GoTo LoiCT
 Dim jJ As Byte, Tuan As Byte, Bu
  
 Do
   Tuan = Weekday(Dat + jJ)
   If Tuan = 1 Or Tuan = 7 Then
      NumDat = NumDat + 1 + IIf(NghiLe(Dat + jJ), 1, 0)
   Else
      If NghiLe(Dat + jJ) = True Then NumDat = NumDat + 1
   End If
   jJ = jJ + 1
   If jJ >= NumDat Then Exit Do
 Loop
 SoNgayLamViec = Dat + NumDat - 1
Err_:   Exit Function
LoiCT:
   MsgBox Error, , Err:                Resume Err_
End Function

PHP:
Function NghiLe(Dat As Date) As Boolean
 Dim Clls As Range
 
9  For Each Clls In Sheets("Tab2").Range("NgLe")
   If Clls.Value = Dat Then
      NghiLe = True:          Exit Function
   End If
 Next Clls
End Function


Những chú í khi sử dụng:

(1) Bạn fải liệt kê danh sách các ngày nghỉ mà Nhà nước quy định lên nơi nào đó trên trang tính & gán cho nó cái tên tương tự như "NgLe" dòng lệnh 9 có ghi. (Chú í tên trang tính của mình đang là "Tab2" - của bạn sẽ khác (!))

Trong ví dụ của bạn thiếu ngày Giổ Tổ Hùng Vương. (Bạn fải cập nhật hàng năm danh sách các ngày nghỉ âm lịch thì hàm mới đúng được)

(2) Cú fáp hàm tại 1 ô trống nào đó sẽ là =SoNgayLamViec(A1,10) - Ở đây [A1] là ô chức ngày bắt đầu & 10 là số ngày làm việc cần tính.
Hàm trả về ngày làm việc cuối cùng kể từ mốc bắt đầu có kể cả ngày lễ & CN, T7.

Mong rằng sẽ không fải gởi file lên cho bạn & chúc vui 1 cách kiên nhẫn!
 
mình muốn
VD: (1) Ngày hiện tại là: 4/20/2010
(2) Số ngày làm việc muốn cộng là: 10
(3) Ngày tiếp theo đã cộng các ngày T7, CN, 30/4, 1/5, nghỉ bù ngày 1/5 là: 5/5/2010
Như thế là từ ngày 04/20/2010 đến ngày 5/5/2010 chỉ có 10 ngày làm việc. Còn tổng ngày kể cả ngày nghỉ là 16 ngày.
Rất mong các bạn lập công thức tính giùm mình để khi chỉ cần nhập số ngày làm việc muốn cộng là ra ngày cuối đã cộng các ngày nghỉ, lễ, nghỉ bù.
Thank all!
nếu mà bạn dùng office 2010 thì tôi chỉ cho bạn hàm nay
=WORKDAY.INTL(start_date,days,weekend,holidays)
vd =WORKDAY.INTL(E13,F13,11,A3:AY3)
 
Lần chỉnh sửa cuối:
Hàm này có tính được các ngày Tết nguyên đán không vậy?

nếu mà bạn dùng office 2010 thì tôi chỉ cho bạn hàm nay
=WORKDAY.INTL(start_date,days,weekend,holidays)
vd =WORKDAY.INTL(E13,F13,11,A3:AY3)

Có fải bổ sung gì đó mới tính được ngày âm lịch, chắc vậy!
 
Có fải bổ sung gì đó mới tính được ngày âm lịch, chắc vậy!
cái chính ở đây la mình cần biết được danh sách những ngày nghỉ triong năm của nhà nước quy định, và ngày nghỉ của riêng đơn vị công tác
ví dụ như nghỉ phép năm, nghỉ tết nguyên đán. vv.vv . để tao thành những ngày gọi là holidays
đây là ví dụ của công ty tôi đang làm việc
 

File đính kèm

  • vi du.xlsx
    11.1 KB · Đọc: 305
Lần chỉnh sửa cuối:
Bạn có thể dùng hàm networkdays để tính, và những ngày lế tết nghỉ thì bạn phải liệt kê ra!
 
Bạn có thể dùng hàm networkdays để tính, và những ngày lế tết nghỉ thì bạn phải liệt kê ra!
hàm networkdays là hàm dùng để tính số ngày làm việc chứ không phải tìm ngày trong tương lai
hàm networkdays sẽ trừ luôn 2 ngày thứ 7 và chủ nhật
 
Đúng rồi hàm networkdays là ngược lại với hàm workday
Trong office 2003 cũng có các hàm này mà, nhưng phải chọn thêm bộ add-in Toolkid gì đó!
 
nếu mà bạn dùng office 2010 thì tôi chỉ cho bạn hàm nay
=WORKDAY.INTL(start_date,days,weekend,holidays)
vd =WORKDAY.INTL(E13,F13,11,A3:AY3)
Mình cám ơn bạn đã giúp mình. Bạn giải thích giúp mình số 11 với ( có phải nó là ngày cuối tuần thứ 7, CN không) tại sao là số 11-\\/.
Mình đã thử ví dụ của bạn nhưng khi thay đổi số ngày làm việc thì ngày của hàm WORKDAY.INTL không tự động nhảy ngày khác. bạn chỉ giúp mình làm cách nào để nó tự động nhảy ngày khi thay đổi số ngày làm việc hay ngày khởi đầu và khi mình gõ = "ô công thức hàm WORKDAY.INTL" thì ngày tiếp theo cũng tự lấy = ngày của hàm WORKDAY.INTL
Rất mong bạn sớm giúp. cám ơn bạn nhiều--=0
 
Mình cám ơn bạn đã giúp mình. Bạn giải thích giúp mình số 11 với ( có phải nó là ngày cuối tuần thứ 7, CN không) tại sao là số 11-\\/.
Mình đã thử ví dụ của bạn nhưng khi thay đổi số ngày làm việc thì ngày của hàm WORKDAY.INTL không tự động nhảy ngày khác. bạn chỉ giúp mình làm cách nào để nó tự động nhảy ngày khi thay đổi số ngày làm việc hay ngày khởi đầu và khi mình gõ = "ô công thức hàm WORKDAY.INTL" thì ngày tiếp theo cũng tự lấy = ngày của hàm WORKDAY.INTL
Rất mong bạn sớm giúp. cám ơn bạn nhiều--=0
số 11 là chỉ chọn ngày chủ nhật thôi
 
số 11 là chỉ chọn ngày chủ nhật thôi

cám ơn bạn. bạn có thể chỉ mình cách tính cả ngày thứ 7 nữa không. tại thủ tục ngày làm việc chỉ tính từ thứ thứ 2 đến thứ 6. nếu thêm vào công thức trên thì như thế nào.
mình gà khoản này lắm ;-)). mong bạn sớm giúp.
 
cám ơn bạn. Bạn có thể chỉ mình cách tính cả ngày thứ 7 nữa không. Tại thủ tục ngày làm việc chỉ tính từ thứ thứ 2 đến thứ 6. Nếu thêm vào công thức trên thì như thế nào.
Mình gà khoản này lắm ;-)). Mong bạn sớm giúp.
bạn xem hình nhé đây là những tham số mà trong máy đã có sẵn
 

File đính kèm

  • CHON NGAY.JPG
    CHON NGAY.JPG
    15.1 KB · Đọc: 120
Lần chỉnh sửa cuối:
Các bạn sửa lỗi subscript out of range dùm mình khi mở 2 file excel cùng lúc khi sử dụng hàm trên, cám ơn nhiều!
 
PHP:
Option Explicit

Function SoNgayLamViec(Dat As Date, NumDat As Byte)
 On Error GoTo LoiCT
 Dim jJ As Byte, Tuan As Byte, Bu
  
 Do
   Tuan = Weekday(Dat + jJ)
   If Tuan = 1 Or Tuan = 7 Then
      NumDat = NumDat + 1 + IIf(NghiLe(Dat + jJ), 1, 0)
   Else
      If NghiLe(Dat + jJ) = True Then NumDat = NumDat + 1
   End If
   jJ = jJ + 1
   If jJ >= NumDat Then Exit Do
 Loop
 SoNgayLamViec = Dat + NumDat - 1
Err_:   Exit Function
LoiCT:
   MsgBox Error, , Err:                Resume Err_
End Function

PHP:
Function NghiLe(Dat As Date) As Boolean
 Dim Clls As Range
 
9  For Each Clls In Sheets("Tab2").Range("NgLe")
   If Clls.Value = Dat Then
      NghiLe = True:          Exit Function
   End If
 Next Clls
End Function


Những chú í khi sử dụng:

(1) Bạn fải liệt kê danh sách các ngày nghỉ mà Nhà nước quy định lên nơi nào đó trên trang tính & gán cho nó cái tên tương tự như "NgLe" dòng lệnh 9 có ghi. (Chú í tên trang tính của mình đang là "Tab2" - của bạn sẽ khác (!))

Trong ví dụ của bạn thiếu ngày Giổ Tổ Hùng Vương. (Bạn fải cập nhật hàng năm danh sách các ngày nghỉ âm lịch thì hàm mới đúng được)

(2) Cú fáp hàm tại 1 ô trống nào đó sẽ là =SoNgayLamViec(A1,10) - Ở đây [A1] là ô chức ngày bắt đầu & 10 là số ngày làm việc cần tính.
Hàm trả về ngày làm việc cuối cùng kể từ mốc bắt đầu có kể cả ngày lễ & CN, T7.

Mong rằng sẽ không fải gởi file lên cho bạn & chúc vui 1 cách kiên nhẫn!


Các bạn sửa lỗi subscript out of range dùm mình khi mở 2 file excel cùng lúc khi sử dụng hàm trên, cám ơn nhiều!​
 
Chào mọi người ở diễn đàn GPE:
Có cao thủ nào giúp mình với.
Mình có ngày bắt đầu là 01/01/2012
Ngày kết thúc là 12/01/2012
Vậy trừ đi thứ 7 và chủ nhật còn lại là 8 ngày.
Bạn nào có công thức cho office 2003 không?
Thank!
 
Chào mọi người ở diễn đàn GPE:
Có cao thủ nào giúp mình với.
Mình có ngày bắt đầu là 01/01/2012
Ngày kết thúc là 12/01/2012
Vậy trừ đi thứ 7 và chủ nhật còn lại là 8 ngày.
Bạn nào có công thức cho office 2003 không?
Thank!

Lẽ ra phải là 9 ngày chứ bạn?

Dùng hàm =NETWORKDAYS("1/1/2012","12/1/2012")

Với hàm này, bạn cũng có thể thêm ngày lễ vào để tính, ví dụ:

Ngày 1/5/2012 là ngày lễ, thì:

1/5/2012 đến 12/5/2012 bạn sẽ có công thức là:

=NETWORKDAYS("1/5/2012","12/5/2012","1/5/2012")
 
Lần chỉnh sửa cuối:
Chào mọi người ở diễn đàn GPE:
Có cao thủ nào giúp mình với.
Mình có ngày bắt đầu là 01/01/2012
Ngày kết thúc là 12/01/2012
Vậy trừ đi thứ 7 và chủ nhật còn lại là 8 ngày.
Bạn nào có công thức cho office 2003 không?
Thank!
Công thức tổng quát sẽ là: Tổng số ngày - Số ngày thứ 7 - Số ngày CN
Muốn biết số ngày thứ 7 hoặc CN giữa 2 thời điểm, xem cái này:
http://www.giaiphapexcel.com/forum/showthread.php?2515-Dùng-hàm-hoặc-code-nào-để-tính-được-số-ngày-Chủ-Nhật-trong-một-quãng-T-G-bất-kỳ&p=16111#post16111
Lẽ ra phải là 9 ngày chứ bạn?

Dùng hàm =NETWORKDAYS("1/1/2012","12/1/2012")
Công thức viết gì mà kỳ cục vậy Nghĩa? Phải vầy mới chính xác: =NETWORKDAYS("2012/1/1","2012/1/12")
Lưu ý: Cài Analysis ToolPak mới dùng được hàm này
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom