Trong một khoảng thời gian có bao nhiêu ngày thứ Bảy, Chủ Nhật,... ? (4 người xem)

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

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

Tôi dùng vòng lập thay thế cho hàm COUNTIF như sau:
PHP:
Option Explicit
Function Ngaylamcuoi(Ngaydau As Date, SN As Integer, Le As Range) As Date
   Dim TextN As String
   Dim iNgay As Date
   Dim Dk, i, j, K As Integer
   For i = 1 To SN * 6
      iNgay = Ngaydau + i
      TextN = Format(iNgay, "d/m")
         Dk = 0
         For j = 1 To Le.Cells.Count
           If iNgay = Le(j) Or TextN = Le(j) Then Dk = 1
         Next j
      If Dk = 0 And Weekday(iNgay) <> 1 Then K = K + 1
      If K = SN Then K = i: Exit For
   Next
   Ngaylamcuoi = Ngaydau + K
End Function
thì code lại chạy đúng! Vậy hàm COUNTIF ở bài trên có vấn đề gì sao?
Nhờ các cao thủ giải thích hộ!
 

File đính kèm

Hình như có vấn đề với công thức của anhtuan và ndu. đó. Bạn thử test ngày 14/07/2008 thử xem. 30 ngày sau là ngày 16/08/2008 chứ không phải là ngày 18/08/2008 như công thức. Mình không tìm được lý do, bạn nào giải thích dùm mình nhé
 
Hình như có vấn đề với công thức của anhtuan và ndu. đó. Bạn thử test ngày 14/07/2008 thử xem. 30 ngày sau là ngày 16/08/2008 chứ không phải là ngày 18/08/2008 như công thức. Mình không tìm được lý do, bạn nào giải thích dùm mình nhé
18/8/2008 là đúng rồi chứ! Công thức này bỏ qua ngày lể và CN mà bạn...
(Chú ý: công thức này tính ngày đầu tiên là ngày hôm sau nha. Ví dụ hôm nay là ngày bắt đầu thì sau 1 ngày là ngày mai)
Bạn xem lại, tôi kiểm tra rồi, kết quả 18/8/2008 là hoàn toàn chính xác
(xem file tôi test đây)
 

File đính kèm

Lần chỉnh sửa cuối:
Các bạn xem lại nghen, mình tao bang nhung khong hien thi duoc.
Vd:
Thu ngày bắt đầu ngày kết thúc tổng số ngày
T2 7/13/08 9/30/10 116
T3 7/13/08 9/30/10 116
T4 7/13/08 9/30/10 116
T5 7/13/08 9/30/10 116
T6 7/13/08 9/30/10 115
T7 7/13/08 9/30/10 115
CN 7/13/08 9/30/10 116

Tổng ngày 810
ngày 20 ?

Với khoảng thời gian đó, ngày 20 là bao nhiêu ngày?
 
Lần chỉnh sửa cuối:
Có khi nào bạn chưa hiểu được cách dùng hàm này không?
Nó là:
- Biết được ngày bắt đầu
- Biết được tổng số ngày
- Biết được các ngày nghĩ lể
===> Tính ngày kết thức là ngày mấy
 
Mình muốn hỏi trong khoảng thời gian từ ngày 7/13/08 đến ngày 9/30/10 là tổng số được 810 ngày.
Từ công thức tính thứ của bạn ndu 96081631 mình tìm tổng số ngày, nhưng mình muốn biết trong khoảng thời gian đó có bao nhiêu ngày là ngày 20.
Tính số ngày thứ hai: =INT((Y-X-WEEKDAY(Y,2)+8)/7)
Tính số ngày thứ ba: =INT((Y-X-WEEKDAY(Y-1,2)+8)/7)
Tính số ngày thứ tư: =INT((Y-X-WEEKDAY(Y-2,2)+8)/7)
Tính số ngày thứ năm: =INT((Y-X-WEEKDAY(Y-3,2)+8)/7)
Tính số ngày thứ sáu: =INT((Y-X-WEEKDAY(Y-4,2)+8)/7)
Tính số ngày thứ bảy: =INT((Y-X-WEEKDAY(Y-5,2)+8)/7)
Tính số ngày chủ nhật =INT((Y-X-WEEKDAY(Y-6,2)+8)/7)

Các bạn xem lại dùm nhé do bài trước đã bị xóa mình không biết nên khi mình viết bổ sung mới ngắn gọn, các bạn thông cảm nhe!
 
Lần chỉnh sửa cuối:
Mình muốn hỏi trong khoảng thời gian từ ngày 7/13/08 đến ngày 9/30/10 là tổng số được 810 ngày.
Vậy với khoảng thời gian đó ngày 20 là bao nhiêu ngày?
A1: 13/07/2008
B1: 30/09/2010
C1=SUMPRODUCT(--(DAY(ROW(INDIRECT(VALUE(A1)&":"&VALUE(B1))))=20))
 
Ví dụ thế này:
Nếu nghỉ từ ngày 14/7/2008 đến ngày 25/7/2008.tổng số ngày nghỉ là 11 ngày bao gồm ngày chủ nhật.em muốn tạo công thức trừ ra các ngày lễ và chủ nhật có trong tháng để tính số ngày công nhân đó được hưởng tính Bảo hiểm.anh chị giúp em với.
Thanks!
 
Tính số ngày làm việc trong một khoảng thời gian bằng công thức có thể anh em trên GPE giải quyết được. Nhưng công thức quá phức tạp, viết đúng rồi, viết lại chưa chắc đúng !.
Tôi chỉ có thể làm bằng VBA chứ công thức thì chịu ! Để tiện cho anh em sử dụng, tôi viết 2 hàm:

NgayLamViec(NgayDau, NgayCuoi, BayCn, rLe)
Đếm số ngày làm việc tính từ ngày đầu đến ngày cuối, trừ các ngày chủ nhật (thứ bảy) và các ngày nghỉ lễ.
NgayDau, NgayCuoi: ngày đầu tiên và ngày cuối cùng (tính luôn 2 ngày này). Có thể nhập ngày nào trước cũng được.
BayCn: quy định số ngày nghỉ trong tuần.
- 1 : tuần nghỉ 1 ngày chủ nhật
- 2 : tuần nghỉ 2 ngày thứ bảy và chủ nhật
(không bắt buộc nhập, ngầm định là 1)
rLe: vùng ô chứa ngày nghỉ lễ. Có 2 loại ngày nghỉ lễ:
- Ngày nghỉ cố định hàng năm (30/4, 1/5, …): nhập dạng chuỗi ‘30/4, ‘1/5
- Ngày nghỉ chỉ có giá trị trong năm (thường là ngày âm lịch như Tết âm lịch, Giỗ tổ Hùng Vương, …) nhập theo dạng ngày tháng năm.
(không bắt buộc nhập)

SoNgay(NgayDau, NgayCuoi, NgayTim)
Đếm số ngày trong tháng (hoặc thứ) tính từ ngày đầu đến ngày cuối
NgayDau, NgayCuoi: ngày đầu tiên và ngày cuối cùng (tính luôn 2 ngày này). Có thể nhập ngày nào trước cũng được.
NgayTim: ngày cần tìm nhập theo quy định:
- Thứ trong tuần: nhập dạng chuỗi “t2”, “t3”, “t4”, “t5”, “t6”, “t7”, “cn” cho các ngày thứ hai > chủ nhật.
- Ngày trong tháng: các số từ 1 đến 31.

Nhờ anh em kiểm tra lại.
 

File đính kèm

Câu hỏi này cũng rất hay!
Bạn tham khảo file đính kèm, chỉ cần sửa lại ngày bắt đầu là ổn
Cần tìm ngày thứ 45 thì =INDEX(DATE,45,1)
(Gợi ý thôi, bạn còn phải sửa lại đôi chút trong name nhé)


Chào bạn ! Bạn có thể cho mình xin file tương tự nhưng tính ngày làm việc trừ đi các ngày thứ 7, chủ nhật và ngày nghỉ lễ ? Cảm ơn bạn nhiều
 
Chào bạn ! Bạn có thể cho mình xin file tương tự nhưng tính ngày làm việc trừ đi các ngày thứ 7, chủ nhật và ngày nghỉ lễ ? Cảm ơn bạn nhiều

Bạn dùng hàm NETWORKDAYS nhé! Cú pháp:
Mã:
=NETWORKDAYS(start_date,end_date,holidays)
 
Nhân bài toán của Hoàng Danh, tôi mới chế ra một cái công thức để đếm xem trong một khoảng thời gian nào đó có bao nhiêu ngày thứ Bảy, bao nhiêu ngày Chủ Nhật.

Đây là công thức đếm ngày thứ Bảy của tôi:

=IF(OR(AND(WEEKDAY(Ngaydau)>4,WEEKDAY(Ngaycuoi)=7),AND(WEEKDAY(Ngaydau)>5,WEEKDAY(Ngaycuoi)<5)),INT((Ngaycuoi-Ngaydau+1)/7)+1,INT((Ngaycuoi-Ngaydau+1)/7))


Với NgaydauNgaycuối là hai ô chứa ngày đầu và ngày cuối trong khoảng thời gian cần tính.

Công thức này trên hơi dài, nhưng có thể dùng để "fill down" cho nhiều hàng, tôi đã dùng để kiểm tra số ngày thứ Bảy có trong mỗi tháng ở nhiều năm khác nhau.

Nếu như chỉ cần nhập 1 ô là Ngày Đầu, và 1 ô là Ngày cuối, thì đặt Name cho gọn hơn:

  • NgayDau = ô chứa giá trị ngày đầu của khoảng thời gian cần tính
  • NgayCuoi = ô chứa giá trị ngày cuối của khoảng thời gian cần tính
  • DAU = WEEKDAY(Ngaydau)
  • CUOI = WEEKDAY(Ngaycuoi)
  • TUAN = INT((Ngaycuoi-Ngaydau+1)/7)
Thì để đếm số ngày thứ Bảy có trong một khoảng thời gian, chỉ cần nhập ngắn như sau:
=IF(OR(AND(DAU>4, CUOI=7), AND(DAU>5, CUOI<5)), TUAN+1, TUAN)

Tương tự, công thức để đếm số ngày Chủ Nhật có trong một khoảng thời gian là:
=IF(OR(AND(DAU=1, CUOI<7), AND(DAU>5, CUOI<6)), TUAN+1, TUAN)

Nhờ các bạn góp ý thêm, bằng cách khác, hoặc làm cho nó ngắn hơn.
Dùng công thức hoàn toàn, không dùng VBA hoặc hàm UDF nha.
Hay... mình đánh giá cáo về độ chế công thức ý... dài cũng ok. cảm ơn ban
 
Web KT

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

Back
Top Bottom