Tìm số ngày làm việc sau một số ngày kể cả thứ bảy

Liên hệ QC

tranboi2004

Thành viên mới
Tham gia
2/5/08
Bài viết
2
Được thích
0
Ví dụ tôi mới nhận 1 HĐ ngày 15-03-08, sau 20 ngày làm việc phải giao hàng, tôi muốn biết sau 20 ngày là ngày bao nhiêu, ở đây tôi đã dùng hàm
workdday("15-03-08",20) nhưng máy cho kết quả là 11-04-08, vấn đề ở đây là excel trừ cả T7 và CN là ngày nghỉ. Cơ quan tôi chỉ nghỉ ngày CN chứ T7 vẫn làm việc bình thường. Vậy làm thế nào để cho ra kết quả là 08-04-08. Mong các bạn chỉ giúp. Cám ơn nhiều
 
Ví dụ tôi mới nhận 1 HĐ ngày 15-03-08, sau 20 ngày làm việc phải giao hàng, tôi muốn biết sau 20 ngày là ngày bao nhiêu, ở đây tôi đã dùng hàm
workdday("15-03-08",20) nhưng máy cho kết quả là 11-04-08, vấn đề ở đây là excel trừ cả T7 và CN là ngày nghỉ. Cơ quan tôi chỉ nghỉ ngày CN chứ T7 vẫn làm việc bình thường. Vậy làm thế nào để cho ra kết quả là 08-04-08. Mong các bạn chỉ giúp. Cám ơn nhiều
Giã sử rằng ta gõ ngày 15/3/2008 vào cell D1 và gõ số 20 vào cell E1
Vậy bạn thử công thức này xem:
Mã:
=D1+E1+SUMPRODUCT((WEEKDAY(D1+ROW(INDIRECT("1:"&E1+INT(E1/7)+1)))=1)*1)
Ghi chú:
hàm
Mã:
=SUMPRODUCT((WEEKDAY(D1+ROW(INDIRECT("1:"&E1+INT(E1/7)+1)))=1)*1)
Cho kết quả là tổng số ngày chủ nhật trong khoảng thời gian từ ngày 16/3/2008 trở đi
ANH TUẤN
 
Lần chỉnh sửa cuối:
Xin lổi... hình như công thức ở trên ko ổn...
Tôi sửa lại như sau:
Vẩn cell D1 và E1 là 2 cell nhập liệu ta đặt name:
Mã:
VT =IF(WEEKDAY($D$2+ROW(INDIRECT("1:"&$E$2*2)))=1,"",ROW(INDIRECT("1:"&$E$2*2)))
Và cuối cùng ta có công thức:
Mã:
 =$D$2+SMALL(VT,$E$2)
Xem file đính kèm
ANH TUẤN
 

File đính kèm

Cám ơn bạn rất nhiều, nhưng nếu được bạn giải thích dùm rỏ một chút đi. Sao tôi thử vào file của mình thì không được ?
 
Lần chỉnh sửa cuối:
Cám ơn bạn rất nhiều, nhưng nếu được bạn giải thích dùm rỏ một chút đi. Sao tôi thử vào file của mình thì không được ?
Bạn thử vào file của bạn mà ko dc thì rất có thể là:
1> Với công thức mãng phải Ctrl + Shift + Enter sau khi gõ xong công thức (nếu Enter sẽ sai)
2> Với công thức rút gọn có đặt name thì khi mang sang file mới bạn phải mang luôn cả name ấy theo (Vào menu Insert\Name\Define để biết name ấy là gì)
Nói chung thuật toán này tôi đã kiểm tra kỹ và thấy chính xác... tuy nhiên nhược điểm là dài dòng và khá khó hiểu, nhất là đối với các bạn chưa quen với mãng...
Vậy tôi đưa lên 1 giãi pháp khác: Công thức thường nhưng cực kỳ ngắn gọn, đãm bảo bạn sẽ ko bị sai khi mang công thức sang file khác!
Công thức:
Mã:
=$D$2+$E$2+INT((WEEKDAY($D$2)+$E$2-2)/6)
Mời bạn xem file, công thức mới nằm tại cell G2... Bạn có thể tăng giãm số ngày bằng Spinner trong cell E2 để kiểm tra độ chính xác nhé!
Mến
ANH TUẤN
 

File đính kèm

Em thấy dùng VBA cho nhanh Anh Tuấn ạ!
PHP:
Function WorkdaySun(Startday As Date, Num As Long) As Date
Dim i, Step As Long
Do While Step < Num
    Startday = Startday + 1
    If Application.WorksheetFunction.Weekday(Startday) <> 1 Then
        Step = Step + 1
    End If
Loop
WorkdaySun = Startday
End Function
Chỉ là một Giải pháp ...
 

File đính kèm

Em thấy dùng VBA cho nhanh Anh Tuấn ạ!
PHP:
Function WorkdaySun(Startday As Date, Num As Long) As Date
Dim i, Step As Long
Do While Step < Num
    Startday = Startday + 1
    If Application.WorksheetFunction.Weekday(Startday) <> 1 Then
        Step = Step + 1
    End If
Loop
WorkdaySun = Startday
End Function
Chỉ là một Giải pháp ...
Cho tôi hỏi: Trong VBA cũng có hàm WEEKDAY, vậy tại sao ko dùng:
PHP:
........
If Weekday(Startday) <> 1 Then
............
mà phải là .... Application.WorksheetFunction ?
ANH TUẤN
 
Oh... hô... Nếu mà thích UDF thì tôi sẽ làm món này theo thuật toán biểu diển trong công thức ở bài #5... Cực ngắn gọn mà khỏi cần vòng lập gì ráo trọi.... (gọi là chuyển thể từ truyện sang.. phim).. he... he...
Tặng bà con cái hàm WORKDAY Việt Nam nhé:
Mã:
Function WorkdayVN(Startday As Date, Num As Long) As Date
  Dim NoS As Long
  NoS = (Weekday(Startday) + Num - 2) \ 6
  WorkdayVN = Startday + Num + NoS
End Function
Mến
ANH TUẤN
 
Oh... hô... Nếu mà thích UDF thì tôi sẽ làm món này theo thuật toán biểu diển trong công thức ở bài #5... Cực ngắn gọn mà khỏi cần vòng lập gì ráo trọi.... (gọi là chuyển thể từ truyện sang.. phim).. he... he...
Tặng bà con cái hàm WORKDAY Việt Nam nhé:
Mã:
Function WorkdayVN(Startday As Date, Num As Long) As Date
  Dim NoS As Long
  NoS = (Weekday(Startday) + Num - 2) \ 6
  WorkdayVN = Startday + Num + NoS
End Function
Mến
ANH TUẤN

Nếu VN thì phải dùng tiếng việt đi anh ơi, thể hiện ra thành chữ lun, hic
 
Nếu VN thì phải dùng tiếng việt đi anh ơi, thể hiện ra thành chữ lun, hic
Giá như mà gõ dc tiếng Việt tôi gõ liền
Ví dụ:
Num tôi có thể dịch là SONGAY nhưng ko thể gõ có dấu, sợ người ta tưởng lầm.. SỜ NGAY thì... he.. he...
Nói vui chứ thật ra có khi chả biết dịch thế nào nữa.. (dịch xong thấy lượm thượm... muốn rõ ràng thì phải.. dài hơi).. Thôi đành tiếng Anh...
Hic...
 
Lần chỉnh sửa cuối:
Tặng bà con cái hàm WORKDAY Việt Nam nhé:
Mã:
Function WorkdayVN(Startday As Date, Num As Long) As Date
  Dim NoS As Long
  NoS = (Weekday(Startday) + Num - 2) \ 6
  WorkdayVN = Startday + Num + NoS
End Function
Mến
ANH TUẤN
Mã:
Nếu vậy thì theo em anh Tuấn đâu cần dùng VBA làm j !
Nếu A2 là ngày bắt đầu
Và B2 là số ngày 
=> Ngày cần tìm sẽ là 
[code]
= A2+B2+(WEEKDAY(A2)+B2-2)/6
Bác Tuấn hay thật!
 
Lần chỉnh sửa cuối:
Mã:
Nếu vậy thì theo em anh Tuấn đâu cần dùng VBA làm j !
Nếu A2 là ngày bắt đầu
Và B2 là số ngày 
=> Ngày cần tìm sẽ là 
[code]
= A2+B2+(WEEKDAY(A2)+B2-2)/6
Bác Tuấn hay thật!
Chính xác phải là:
= A2+B2+INT((WEEKDAY(A2)+B2-2)/6)
ANH TUẤN
 
Đồng ý với anh nhưng :
Không cần đâu anh, Nếu Format Cells : dd/mm/yy.
-\\/.
Cũng đồng ý với bạn về điều này, nhưng nếu dùng để tính toán thì phải chính xác chứ
Lấy nó cộng trừ nhân chia 1 hồi coi chừng sẽ sai bét, vì nó có.. lẻ phần thập phân
 
Web KT

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

Back
Top Bottom