HÀM DATEDIF

DATEDIF

Có lẽ cách dễ nhất khi muốn tính toán ngày tháng năm là dùng hàm DATEDIF, ứng dụng nhiều khi tính thâm niên làm việc.

Cú pháp: =DATEDIF(start_day, end_day, unit)

start_day
: Ngày đầu

end_day: Ngày cuối (phải lớn hơn ngày đầu)

unit: Chọn loại kết quả trả về (khi dùng trong hàm phải gõ trong dấu ngoặc kép)
y : số năm chênh lệch giữa ngày đầu và ngày cuối
m : số tháng chênh lệch giữa ngày đầu và ngày cuối
d : số ngày chênh lệch giữa ngày đầu và ngày cuối
md : số ngày chênh lệch giữa ngày đầu và tháng ngày cuối, mà không phụ thuộc vào số năm và số tháng
ym : số tháng chênh lệch giữa ngày đầu và ngày cuối, mà không phụ thuộc vào số năm và số ngày
yd : số ngày chênh lệch giữa ngày đầu và ngày cuối, mà không phụ thuộc vào số năm

Ví dụ:
=DATEDIF("01/01/2000", "31/12/2100", "y") = 100 (năm)
=DATEDIF("01/01/2000", "31/12/2100", "m") = 1211 (tháng)
=DATEDIF("01/01/2000", "31/12/2100", "d") = 36889 (ngày)
=DATEDIF("01/01/2000", "31/12/2100", "md") = 30 (= ngày 31 - ngày 1)
=DATEDIF("01/01/2000", "31/12/2100", "ym") = 11 (= tháng 12 - tháng 1)
=DATEDIF("01/01/2000", "31/12/2100", "yd") = 365 (= ngày 31/12 - ngày 1/1)

Ví dụ: tính thâm niên làm việc
A2 là ngày vào làm
B2 là ngày chốt công (có thể tính đến ngày hiện tại với hàm TODAY() ).
C2 có công thức: =DATEDIF(A2,B2,"y")&" năm "&DATEDIF(A2,B2,"ym")&" tháng "&DATEDIF(A2,B2,"md")&" ngày"

1573281962403.png
 

Bình luận

Microsoft có cảnh báo 1 số tình huống không chính xác khi sử dụng hàm này. Chi tiết:

Warning: Excel provides the DATEDIF function in order to support older workbooks from Lotus 1-2-3. The DATEDIF function may calculate incorrect results under certain scenarios. Please see the known issues section of this article for further details.
 
Bạn lấy ngày nhỏ - ngày lớn nên bị sai là phải rồi.
Bài đã được tự động gộp:

Microsoft có cảnh báo 1 số tình huống không chính xác khi sử dụng hàm này. Chi tiết:

Warning: Excel provides the DATEDIF function in order to support older workbooks from Lotus 1-2-3. The DATEDIF function may calculate incorrect results under certain scenarios. Please see the known issues section of this article for further details.
Anh ơi, em dùng Datedif trên Excel như sau: Datedif("30/11/2019";"05/12/2019";"m") thì kết quả =0
Còn dùng datedif trong VBA: Datedif("m";30/11/2019";"05/12/2019") thì kết quả =1.

Do dữ liệu 60.000 dòng, em muốn dùng VBA tính cho nhanh thì bị sai như trên. Có cách nào để nó tính như bên Excel không ạ?
 
Bạn lấy ngày nhỏ - ngày lớn nên bị sai là phải rồi.
Bài đã được tự động gộp:



Anh ơi, em dùng Datedif trên Excel như sau: Datedif("30/11/2019";"05/12/2019";"m") thì kết quả =0
Còn dùng datedif trong VBA: Datedif("m";30/11/2019";"05/12/2019") thì kết quả =1.

Do dữ liệu 60.000 dòng, em muốn dùng VBA tính cho nhanh thì bị sai như trên. Có cách nào để nó tính như bên Excel không ạ?
Bạn phải hiểu nguyên tắc thời gian trong Excel thì mới đúng, m/d/y chứ không phải d/m/y.
 
Top Bottom