Tính ngày sau 1 khoảng thời gian không kể chủ nhật (1 người xem)

  • Thread starter Thread starter Linhvoi
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Linhvoi

Thành viên mới
Tham gia
23/5/09
Bài viết
16
Được thích
2
Nghề nghiệp
admin
Câu hỏi của tớ là: vi du: từ ngày 1/4/2009 thì sau 22 ngày nữa sẽ là ngày tháng năm nào? nhớ là không tính chủ nhật.
rất mong moịi người giúp tớ, tớ đã cố làm rồi mà ko làm đc.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Câu hỏi của tớ là: vi du: từ ngày 1/4/2009 thì sau 22 ngày nữa sẽ là ngày tháng năm nào? nhớ là không tính chủ nhật.
rất mong moịi người giúp tớ, tớ đã cố làm rồi mà ko làm đc.
Bạn cho hỏi: Ngoài Chủ nhật ra thì có trừ ngày nghỉ lễ không?
 
Câu hỏi của tớ là: vi du: từ ngày 1/4/2009 thì sau 22 ngày nữa sẽ là ngày tháng năm nào? nhớ là không tính chủ nhật.
rất mong moịi người giúp tớ, tớ đã cố làm rồi mà ko làm đc.
Mình viết theo đúng như yêu cầu của bạn, các ngày nghỉ lễ không tính đến.
PHP:
Function DateAdd(CurDate As Date, Days As Long) As Date
Do
CurDate = CurDate + 1
If Weekday(CurDate) <> 1 Then Days = Days - 1
Loop While Days > 0
DateAdd = CurDate
End Function
 

File đính kèm

Câu hỏi của tớ là: vi du: từ ngày 1/4/2009 thì sau 22 ngày nữa sẽ là ngày tháng năm nào? nhớ là không tính chủ nhật.
rất mong moịi người giúp tớ, tớ đã cố làm rồi mà ko làm đc.


Mình nghĩ lấy ngày 1/4/2009 + 22

Sau đó xem trong mảng từ ngày 1/4/2009 thêm 22 ngày nữa có bao nhiêu ngày chủ nhật nữa rồi cộng vào trên!

Cách giải của mình như trên không biết có hợp lý không?

Mong mọi người cho ý kiến!

BB! ;;;;;;;;;;;
 
Mình nghĩ lấy ngày 1/4/2009 + 22

Sau đó xem trong mảng từ ngày 1/4/2009 thêm 22 ngày nữa có bao nhiêu ngày chủ nhật nữa rồi cộng vào trên!

Cách giải của mình như trên không biết có hợp lý không?

Mong mọi người cho ý kiến!

BB! ;;;;;;;;;;;

Sai, vì nếu bạn lấy khoảng thời gian "1/4/2009 + 22" để đếm số ngày chủ nhật rồi công thêm vào thì coi như bạn đã bỏ sót 1 ngày chủ nhật 26/04/2009. Và kết quả sai sẽ là 23/04/2009 thay vì 27/04/2009
 
Mình nghĩ lấy ngày 1/4/2009 + 22

Sau đó xem trong mảng từ ngày 1/4/2009 thêm 22 ngày nữa có bao nhiêu ngày chủ nhật nữa rồi cộng vào trên!

Cách giải của mình như trên không biết có hợp lý không?

Mong mọi người cho ý kiến!

BB! ;;;;;;;;;;;
Không đơn giản thế đâu!
Ví dụ:
- Ngày 4 tháng 4 năm 2009 là ngày thứ 7
- Cho thời gian trôi qua là 7 ngày
- Vậy theo ý bạn, khi cộng thêm 7 ngày ta sẽ ra kết quả = 11/04/2009 (cũng là ngày thứ 7)
- Và cũng theo cách của bạn, giửa 2 ngày này có 1 ngày CN, ta cộng thêm vào kết quả, nó ra ngày 12/04/2009 ---> Ngày này là CN nha!
------------------
Nói thêm: Bài này dùng công thức hay VBA đều không khó, quan trọng phải làm rõ mấy vấn đề sau:
- Tổng số ngày là có bao gồm ngày bắt đầu hay không?
- Ngoài việc loại trừ CN còn loại trừ thêm gì không? Chẳng hạn là NGÀY NGHỈ LỄ
 
Cách của mình là:

Lấy số ngày cần cộng thêm chia cho 7 được bao nhiêu thì đó là số ngày chủ nhật cần cộng thêm. Sau đó xem ngày bắt đầu là thứ mấy rồi cộng thêm phần dư của phép chia ở trên, nếu phần dư cộng thứ của ngày bắt đầu lớn hơn hoặc bằng 7 thì sẽ cộng thêm số ngày dư cộng 1 ngày nữa, còn không thì cộng số ngày dư thôi.

Ví dụ ô A1 là ngày bắt đầu, ô B1 là ngày số cần cộng thêm thì công thức sẽ là:
=IF(WEEKDAY(A1)+MOD(B1,7)>=7,MOD(B1,7)+1,MOD(B1,7))+B1+INT(B1/7)+A1
Và nếu A1=04/04/2009 B1=22 thì kết quả là 01/05/2009

Theo công thức trên, giả thiết của
Không đơn giản thế đâu!
Ví dụ:
- Ngày 4 tháng 4 năm 2009 là ngày thứ 7
- Cho thời gian trôi qua là 7 ngày
- Vậy theo ý bạn, khi cộng thêm 7 ngày ta sẽ ra kết quả = 11/04/2009 (cũng là ngày thứ 7)
- Và cũng theo cách của bạn, giửa 2 ngày này có 1 ngày CN, ta cộng thêm vào kết quả, nó ra ngày 12/04/2009 ---> Ngày này là CN nha!
Kết quả là ngày 13/04/2009
 
Lần chỉnh sửa cuối:
vo cung cam on cac ban da giup to, to di lam ca ngay gio moi xem dc cac y kien dong gop cua cac ban, y cua to la :
4/1/2009 sau 22 ngày nữa ko tính chủ nhật thì là ngày nào, va các bạn ko cần quan tâm tới ngày nghỉ, lễ, và tính bắt đàu từ 4/1/2009 các bạn ạ.

va mình xin nói thêm là, kết quả đúng là rơi vào 4/25/2009(theo excel thì là tháng rồi đến ngày, nên ở đây là ngày 1 tháng 4 năm 2009 sau 22 ngày, ko kể chủ nhật(đếm cả thứ 7) thì sẽ là ngày bao nhiêu? kết quả mình tính thủ công là ngày 25 thãng năm 2009 các bạn ạ/ các bạn giup mình với nhé. neu thành công mình sẽ hậu tạ

cach cua bạn hoangdanh28vn minh da lam thu roi ma ko dc, no bao loi #name ban a

-------------------
Bạn lưu ý : bài không dấu sẽ bị xoá
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cach cua ban solomon2211 ko dung voi tat ca cac ngay dau, vi minh da thu voi ngay khac nhung ket qua ko dung . Cac ban nghi lai xem co cach nao giup minh ko?thanhks

Bạn thử công thức này, trường hợp ngày bắt đầu là chủ nhật vẫn đúng:
=IF(WEEKDAY(A1)+MOD(IF(B1>7,B1,0),7)>=7,MOD(IF(B1>7,B1,0),7)+1,MOD(IF(B1>7,B1,0),7))+B1+INT(B1/7)+A1

Kết quả đúng là 27/04/2009 mà. Bạn đếm lại xem.
 
Chỉnh sửa lần cuối bởi điều hành viên:
chào cả nhà, tớ là thành viên mới, tớ có vấn đề khúc mắc sau muốn thỉnh giáo ý kiến của tất cả mọi người, mong mọi người giúp tớ, tớ sẽ hậu tạ bạn nào giúp tớ giải quyết đc vấn đề này |||||. câu hỏi của tới như sau:
bắt đầu từ nggày 5 tháng 5 năm 2009 thì sau 22 nggày ( kô đếm chủ nhật, ko quan tâm tới ngày nghỉ lễ, và nhớ vẫn đếm thứ bảy bình thường) thì ngày sau 22 ngày đó là ngày nào?và theo cách tính thủ công của tớ đó là ngày 29 tháng 5 năm 2009.
chân thành cảm ơn các bạn trước nhé//**/

bạn solomon ơi, tớ thử với ngày khác lại ko đúng bạn ạ.

toứ ví dụ thếm nhé, từ ngày 12 tháng 5 năm 2009 sau 17 ngày nữa thì theo tính cách bạn sẽ là ngày 3 tháng 6 năm 2009. thực tế lại là ngỳ 30 tháng 5 năm 2009 mà

Tớ đã chhạy thử công thức mới của bạn rồi salomon ạ, nhưng nó lại báo lỗi #name? Bạn ạ?
 
Chỉnh sửa lần cuối bởi điều hành viên:
toứ ví dụ thếm nhé, từ ngày 12 tháng 5 năm 2009 sau 17 ngày nữa thì theo tính cách bạn sẽ là ngày 3 tháng 6 năm 2009. thực tế lại là ngỳ 30 tháng 5 năm 2009 mà

Bạn giải thích cách tính này đi, từ đó mới có thể có công thức đúng được. 17 ngày sau có tính ngày 12 tháng 5 không vậy?
 
Tớ đã chhạy thử công thức mới của bạn rồi salomon ạ, nhưng nó lại báo lỗi #name? Bạn ạ?
Sau khi xem trao đổi giữa bạn với anh solomon tôi cũng chưa hỉu lắm về ý đồ của bạn.Tuy nhiên tôi cũng đưa ra cho bạn cách thế này cho bạn tham khảo nhé!Chúc thành công!
 

File đính kèm

thanks Logica nhiều lắm, nhưng với ngày khác mình áp dụng lại ko đúng bạn ạ, ví dụ từ ngày 30 tháng 5 sau 14 ngày nữa thì đúng ra là ngày 15 tháng 6 thì chạy theo cách của bạn lại ra 14 thnág 6. và ngày 14 tháng sau rơi vào chủ nhật, hình như nó ko bỏ chủ nhật này thì pải.
 
Đổi món tí đi vậy: Thử với hàm người dùng như sau

PHP:
Option Explicit
Function WorkingDayS(Num As Integer, Optional Dat As Date) As Date
 If Dat = 0 Then Dat = Date
 Dim Jj As Integer
 Do
   If Weekday(Dat) > 1 Then
      Jj = Jj + 1
   End If
   If Jj = Num Then Exit Do
   Dat = Dat + 1
 Loop
 WorkingDayS = Dat
End Function
| Ngay | SoLg | Hàm trả về |(Cú pháp)
|5/5/2009|22|5/29/2009| =WorkingDayS(C2,B2)
|5/12/2009|17|5/30/2009| }}}}} ;;;;;;;;;;; --=0
|5/30/2009|14|6/15/2009| =WorkingDayS(C4,B4)
 
Theo cách tính của bạn kết quả đúng là 25/04/2009!

Bạn xem lại kết quả thử xem bắt đầu từ ngày 01/04/2009 sau 22 ngày nữa là ngày 23/04/2009 trong quảng thời gian trên có 3 ngày chủ nhật ra 26/04/2009 nhưng ngày 26/04/2009 lại là chủ nhật nên kết quả đúng lại là 27/04/2009 (không kể chủ nhật)+-+-+-++-+-+-+

BB!--=--

-------------------
Bạn lưu ý : bài không dấu sẽ bị xoá
[/quote]
 
Theo cách tính của bạn kết quả đúng là 25/04/2009!

Bạn xem lại kết quả thử xem bắt đầu từ ngày 01/04/2009 sau 22 ngày nữa là ngày 23/04/2009 trong quảng thời gian trên có 3 ngày chủ nhật ra 26/04/2009 nhưng ngày 26/04/2009 lại là chủ nhật nên kết quả đúng lại là 27/04/2009 (không kể chủ nhật)+-+-+-++-+-+-+

BB!--=--

-------------------

Vậy công thức này đúng mà, với A1 là ngày bắt đầu, B1 là số ngày cộng thêm.

=IF(WEEKDAY(A1)+MOD(IF(B1>7,B1,0),7)>=7,MOD(IF(B1> 7,B1,0),7)+1,MOD(IF(B1>7,B1,0),7))+B1+INT(B1/7)+A1

 
Gửi bạn Linhvoi cách tính của tôi
Bài toán này tôi đã tính toán cách đây khá lâu và khó hơn: Tính ngày đi làm sau 1 khoảng thời gian, bỏ qua CN và các ngày lể... Bây giờ bạn chỉ bỏ qua CN, không bỏ qua các ngày lể thì.. càng dể
Xem file nhé (file có dùng name để làm gọn công thức)
 

File đính kèm

Lần chỉnh sửa cuối:
cảm ơn bạn Ndu nhé, nhưng bạn có thể giải thích rõ các hàm và cách làm cuả bạn ko? hình như bạn đã dấu bớt công thức rồi nên khi thử lam mình luôn bị bào lỗi, mong bạn giúp thig giup tỉ mỉ một chút%#^#$tớ hứa sẽ hậu tạ bạn nếu tớ làm đc hàm này/-*+/

solomon oi, công thức naỳ của bạn không đúng với tất cả các ngày , tớ đã thử rồi mà, bạn thử tham khảo cách dùng của Ndu ở trang thứ 3 xem sao? ban ấy dùng hàm Index, và có lẽ bạn ấy đã dấu bớt công thức đi nên tớ ko hiểu rõ lắm, nếu bạn có thể giải thích và lam no cụ thể hay hoàn chỉnh thì giúp tớ nhe, tớ đã thử rồi mà không được
 
Chỉnh sửa lần cuối bởi điều hành viên:
cảm ơn bạn Ndu nhé, nhưng bạn có thể giải thích rõ các hàm và cách làm cuả bạn ko? hình như bạn đã dấu bớt công thức rồi nên khi thử lam mình luôn bị bào lỗi, mong bạn giúp thig giup tỉ mỉ một chút%#^#$tớ hứa sẽ hậu tạ bạn nếu tớ làm đc hàm này/-*+/
Bạn mở file của tôi lên, vào menu Insert\Name\Define sẽ thấy 2 công thức phụ nằm trong đó
Đương nhiên nếu làm trên file thật mà bạn không mang 2 công thức phụ này theo thì nó sẽ báo lổi!
Nếu bạn áp dụng vào file mình không được, có thể gửi file lên đây, tôi giúp cho!
 
gui bạn NDU

Bạn Ndu ơi, Linh đã làm theo hướng dẫn của bạn rồi mà vẫn không được, nó vẫn báo lỗi, bạn xem lại mình đã làm sai chỗ nào và giúp ,mình nhé,cảm ơn bạn rất nhiều. híc...
 

File đính kèm

Web KT

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

Back
Top Bottom