Các câu hỏi về thời gian, tính toán giờ, ngày, tháng, năm được post ở đây

Liên hệ QC
- Cho tôi xin công thức tính số tháng từ 1 ngày tháng hiện tại đến 1 mốc thời gian nào đó.
- VD có 1 người sinh ngày 31/10/2009. Tôi muốn tính đến ngày 30/06/2010 thì có bao nhiêu tháng.
- Tôi đã dùng công thức này =DATEDIF("31/10/2009","30/06/2010","m") .
- Nó xảy ra 1 trường hợp là nếu ngày sinh (31) lớn hơn ngày cần tính (30) thì nó sẽ tính thiếu 1 tháng.
- Đừng nói là thêm vào +1 ở đằng sau, vì tôi tính cho rất nhiều trường hợp.
- Cảm ơn trước.
Theo như bạn nói thì sẽ có tình huống thế này:
Từ ngày 31/1/2010 đến ngày 28/2/2010 thì hàm DATEDIF sẽ tính là 0 tháng (lý ra phải là 1 tháng)
Rất khoai
Tôi tạm dùng cách này:
- Cộng ngày đầu cho 2
- Công ngày cuối cho 2
- Dùng DATEDIF với 2 kết quả trên
Cộng như vậy để phòng trường hợp ngày cuối là 28 tháng 2
Ví dụ:
A1 chứa ngày đầu
B1 chứa ngày cuối
Vậy công thức tôi đề xuất là:
=DATEDIF(A1+2,B1+2,"M")
Bạn kiểm tra lại xem có sai sót gì không nha!
 
Trong khi chờ các nhà siêu công thức, bạn ngâm cứu hàm mảng tự tạo này xem sao

PHP:
Option Explicit
Const Bon As Double = 4
Function Phien(Dat1 As Date, Dat2 As Date)
 Dim jJ As Byte:                                ReDim MDL(1 To 6, 1 To 2)
   
 For jJ = 2 To 6
   MDL(jJ, 1) = "":                             MDL(jJ, 2) = ""
 Next jJ
 Phien = Hour(Dat2 - Dat1)
 MDL(1, 1) = TimeSerial(Hour(Dat1), Minute(Dat1), Second(Dat1))
 If Phien < 4 Then
   MDL(1, 2) = TimeSerial(Hour(Dat2), Minute(Dat2), Second(Dat2))
 Else
   MDL(1, 2) = TimeSerial(Hour(Dat1) + Bon, Minute(Dat1), Second(Dat1))
   For jJ = 2 To 2 + Phien \ 4 + 1
      MDL(jJ, 1) = _
         TimeSerial(Hour(Dat1) + (jJ - 1) * Bon, Minute(Dat1) + (jJ - 1) * 10, Second(Dat1))
      MDL(jJ, 2) = TimeSerial(Hour(Dat1) + jJ * Bon, Minute(Dat1) + (jJ - 1) * 10, Second(Dat1))
      
      If MDL(jJ, 2) > TimeSerial(Hour(Dat2), Minute(Dat2), Second(Dat2)) Then
         MDL(jJ, 2) = TimeSerial(Hour(Dat2), Minute(Dat2), Second(Dat2))
         Exit For
      End If
   Next jJ
 End If
 Phien = MDL
End Function
 

File đính kèm

  • GPE.rar
    197.6 KB · Đọc: 43
nếu không tính thứ 7 và chủ nhật thì hàm workday chính là hàm bạn cần
cú pháp
=workday(ngày bắt đầu,số ngày,ngày nghỉ lễ)
ví dụ:
=workday(d3,c3,$g$2:$g$5)
trong đó g2:g5 là vùng bạn liệt kê những ngày nghỉ lễ trong năm
lưu ý: muốn dùng hàm này phải cài add-in analysis toolpak (menu tools\add-ins... Và check vào mục analysis toolpak)

nhưng mà bạn ui?ở đây mình đang làm bài toàn ngược
biết đc ngày bắt đầu nghỉ, số ngày đc nghỉ.
Giờ tính ra ngày hết phép mà.
Thanks bạn./.
 
nhưng mà bạn ui?ở đây mình đang làm bài toàn ngược
biết đc ngày bắt đầu nghỉ, số ngày đc nghỉ.
Giờ tính ra ngày hết phép mà.
Thanks bạn./.
Thì hàm WORKDAY là nó chứ còn gì nữa mà ngược với chả thuận
Bạn thử chưa?
 
workdays là để tính số ngày đi làm thui mà
mình ko cần tính cái đấy, số ngày đi làm mình đã biết mà
 
workdays là để tính số ngày đi làm thui mà
mình ko cần tính cái đấy, số ngày đi làm mình đã biết mà
Chán bạn quá
Ai nói với bạn rằng : workday là để tính số ngày đi làm vậy?
Thử chưa? Nếu đã thử rồi thì quăng file lên đây làm bằng chứng
 
Chán bạn quá
Ai nói với bạn rằng : workday là để tính số ngày đi làm vậy?
Thử chưa? Nếu đã thử rồi thì quăng file lên đây làm bằng chứng
BÁC ndu ƠI XIN ĐỪNG NÓNG
TÁC GIẢ HIỂU NHẦM HÀM WORKDAY THÀNH NETWORKDAY MẤT TIÊU RỒI
HÀM WORKDAY LÀ TÍNH NGÀY SẼ KẾT THÚC CÔNG VIỆC TRỪ NGÀY LỄ VÀ THỨ 7+CN
HÀM NETWOKDAY LÀ TÍNH SỐ NGÀY SỐ LÀM VIỆC TRỪ NGÀY LỄ VÀ THỨ 7+CN
 
Lần chỉnh sửa cuối:
Hàm nào để cộng tháng ra ngày cụ thể?

Xin vui lòng hướng dẫn hàm gì để cộng tháng ra ngày?

Ví dụ:
23/07/2010 cộng thêm 1 tháng sẽ ra ngày 23/08/2010, hoặc cộng n tháng sẽ ra tương ứng như vậy?

Cám ơn rất nhiều!
 
Xin vui lòng hướng dẫn hàm gì để cộng tháng ra ngày?

Ví dụ:
23/07/2010 cộng thêm 1 tháng sẽ ra ngày 23/08/2010, hoặc cộng n tháng sẽ ra tương ứng như vậy?

Cám ơn rất nhiều!
Gì vậy? Learning_Excel mà hỏi câu này sao ta?
=DATE(YEAR(A1),MONTH(A1)+ bao nhiêu tháng tùy ý,DAY(A1))
Còn không thì:
=EDATE(A1, bao nhiêu tháng tùy ý)
----------------------
Trong 1 số trường hợp cụ thể (liên quan đến năm nhuận) thì 2 công thức trên có kết quả khác nhau
 
Lần chỉnh sửa cuối:
Thắc mắc vậy là vì tôi có thể áng chừng bạn ở "tầm" nào!
Hay thấy GPE hết bài viết nên gữi đại câu hỏi đây!
Ẹc... Ẹc...

Nói một hồi các MOD nói em Spam, chứ em không biết thiệt mờ!

Cám ơn Thầy nhiều nhiều!!!

Thầy mới bổ sung câu này:

Trong 1 số trường hợp cụ thể (liên quan đến năm nhuận) thì 2 công thức trên có kết quả khác nhau


Vậy theo kinh nghiệm, Trường hợp này hàm nào chính xác hơn hả Thầy?
 
Lần chỉnh sửa cuối:
Thầy mới bổ sung câu này:
Trong 1 số trường hợp cụ thể (liên quan đến năm nhuận) thì 2 công thức trên có kết quả khác nhau
Vậy theo kinh nghiệm, Trường hợp này hàm nào chính xác hơn hả Thầy?
Gõ vào cell A1 ngày 30/1/2008 sẽ thấy công thức
=DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))

=EDATE(A1, 1)
cho kết quả khác nhau!
Ta không thể nói cái nào chính xác hơn! Tùy theo nhu cầu mà chọn lựa thôi
 
Gõ vào cell A1 ngày 30/1/2008 sẽ thấy công thức
=DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))

=EDATE(A1, 1)
cho kết quả khác nhau!
Ta không thể nói cái nào chính xác hơn! Tùy theo nhu cầu mà chọn lựa thôi
Cảm ơn Bác ndu, có thế tôi mới biết cách đầu cộng đủ 31 ngày, cách sau cộng một tháng thực tế (bao giờ cho đến 30/2) nên từ 28/1 đến 31/1 cách 2 đều cho KQ như nhau.
 
Trong 1 số trường hợp cụ thể (liên quan đến năm nhuận) thì 2 công thức trên có kết quả khác nhau
Phát biểu này không chính xác.

1. Tháng kết quả ít ngày hơn tháng bắt đầu:

Hai công thức sẽ giống nhau ở tất cả các ngày trong năm (tất cả các năm nhuận và không nhuận), trừ những ngày bắt đầu sau đây là khác nhau:

- Ngày 31 tháng 1, 3, 5, 7, 8, 10, 12
- Ngày 29, 30, tháng <> 2 năm thường, ngày 30 tháng <> 2 năm nhuận, mà kết quả là tháng 2

2. Tháng kết quả & tháng bắt đầu có cùng số ngày (28, 29, 30, 31):

Giống nhau trong mọi trường hợp.

3. Tháng kết quả nhiều ngày hơn tháng bắt đầu:

Giống nhau trong mọi trường hợp.
 
Lần chỉnh sửa cuối:
hỏi cách tính số ngày thuê

Biết: nếu ngày đi = ngày đến thì sonngaythue=1
ngược lại songaythue=ngaydi- ngayden

Thanks
 
Bạn dùng hàm IF()
=if(A2=B2,1,B2-A2)
Với
A2: ngày đến
B2: ngày đi
 
Web KT
Back
Top Bottom