HÀM DATEDIF

Quảng cáo

leonguyenz

Thành viên mới
Thành viên BQT
Moderator
Tham gia ngày
2 Tháng tám 2010
Bài viết
5,029
Được thích
8,603
Điểm
3,218
Nơi ở
Bình Dương
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
 

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
6,955
Được thích
23,824
Điểm
6,668
Nơi ở
Hà Nội
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.
 

Jenda Truong

Thành viên mới
Tham gia ngày
2 Tháng tư 2019
Bài viết
1
Được thích
0
Điểm
0
Tuổi
31
Chào mọi người,
Sao em làm hàm DATEDIF nhưng 1 số dòng tính được, 1 số dòng lại hiện NUM, mọi người biết vì sao không giúp em với. Huu
 

vanle33

Thành viên gạo cội
Tham gia ngày
30 Tháng mười 2008
Bài viết
5,630
Được thích
3,818
Điểm
2,168
Nơi ở
Thị xã Sơn Tây - TP Hà Nội
Chào mọi người,
Sao em làm hàm DATEDIF nhưng 1 số dòng tính được, 1 số dòng lại hiện NUM, mọi người biết vì sao không giúp em với. Huu
Bạn phải cố định K10 vào chứ.
Nháy kép vào công thức, kích vào K10, nhấn F4 (cho tất cả các vị trí K10)/Enter rồi copy cho các cell ở dưới.
 

ptm0412

Bad Excel Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
10,300
Được thích
30,510
Điểm
9,718
Tuổi
59
Nơi ở
Gò Vấp
Bạn phải cố định K10 vào chứ.
Nháy kép vào công thức, kích vào K10, nhấn F4 (cho tất cả các vị trí K10)/Enter rồi copy cho các cell ở dưới.
Ở đâu có K10? Đọc hết 3 bài bên trên không thấy cả ảnh lẫn chữ
 

phananhvusv

Thành viên chính thức
Tham gia ngày
28 Tháng ba 2017
Bài viết
65
Được thích
12
Điểm
0
Tuổi
33
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 ạ?
 

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
6,955
Được thích
23,824
Điểm
6,668
Nơi ở
Hà Nội
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.
 

phananhvusv

Thành viên chính thức
Tham gia ngày
28 Tháng ba 2017
Bài viết
65
Được thích
12
Điểm
0
Tuổi
33
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.
Em thử code datediff("m","12/31/2019", "01/01/2020") trong VBA thì cũng =1, mặc dù 2 ngày này chỉ cách nhau 1 ngày. Nếu muốn tính tháng đủ bằng VBA thì mình dùng code nào vậy anh?
 

vannghettyt

Thành viên mới
Tham gia ngày
24 Tháng bảy 2019
Bài viết
8
Được thích
0
Điểm
0
Tuổi
33
Mọi người ơi có tính được tổng thời gian công tác tại 2 noi không ah
VD Công tác tại xã A: 01/08/1998 đến 30/8/2002 công tác được: 4 năm, 1 tháng, 0 ngày
Công tác tại xã B: 01/07/2008 đến 28/02/2020 công tác được: 11 năm, 8 tháng, 0 ngày
Vậy tổng thời gian công tác tai 2 nơi A, b là: 15 năm 9 tháng. CÓ công thức nào tự động cộng tổng không ạ
 

ptm0412

Bad Excel Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
10,300
Được thích
30,510
Điểm
9,718
Tuổi
59
Nơi ở
Gò Vấp
Mọi người ơi có tính được tổng thời gian công tác tại 2 noi không ah
VD Công tác tại xã A: 01/08/1998 đến 30/8/2002 công tác được: 4 năm, 1 tháng, 0 ngày
Công tác tại xã B: 01/07/2008 đến 28/02/2020 công tác được: 11 năm, 8 tháng, 0 ngày
Vậy tổng thời gian công tác tai 2 nơi A, b là: 15 năm 9 tháng. CÓ công thức nào tự động cộng tổng không ạ
Lấy cuối cuối trừ đầu đầu
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
10,775
Được thích
13,248
Điểm
4,868
Tháng có tháng dài tháng ngắn. Hai tháng đầu năm (1-2) cộng nhau ngắn hơn hai tháng giữa năm (7-8) 3 ngày.
Cộng tổng ngày tháng năm phải cho biết theo tiêu chuẩn nào.
hai số tháng t1, t2 cộng nhau thì ra Quotient(t1+t2,12) năm và Mod(t1+t2,12) ? tạm chấp nhận
hai số ngày ng1, ng2 cộng nhau thì lên tháng theo chuẩn 30 hay 31 ngày?
 

batman1

Thành viên gạo cội
Tham gia ngày
8 Tháng chín 2014
Bài viết
3,894
Được thích
6,089
Điểm
2,568
Mọi người ơi có tính được tổng thời gian công tác tại 2 noi không ah
VD Công tác tại xã A: 01/08/1998 đến 30/8/2002 công tác được: 4 năm, 1 tháng, 0 ngày
Thậm chí từ 1998-08-01 đến 2002-08-31 còn chưa được 4 năm 1 tháng, chứ chưa tính tới 2002-08-30.
 

vannghettyt

Thành viên mới
Tham gia ngày
24 Tháng bảy 2019
Bài viết
8
Được thích
0
Điểm
0
Tuổi
33
Nhờ quý anh chị giúp hàm tính tuổi nghỉ hưu từ năm 2021(theo Bộ luật lđ 2019). Xin cảm ơn.
 

Nguyễn Hồng Lam

Thành viên hoạt động
Tham gia ngày
7 Tháng mười hai 2017
Bài viết
131
Được thích
35
Điểm
0
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"

View attachment 228033
Chào, sao hàm này trên excel mình không có nhỉ. Mình dùng excel 2019 pro 64 bit. Làm sao xuất hiện được hàm này, chỉ mình với
 

Nguyễn Hồng Lam

Thành viên hoạt động
Tham gia ngày
7 Tháng mười hai 2017
Bài viết
131
Được thích
35
Điểm
0
Bạn phải cài addin để sử dụng chứ. Vào Developer/Add-ins/Analysis Toolpak

Mình có làm thì thế này đây bạn:
- Nếu vào Excel add - in chọn Analysis ToolPak thì gõ cũng không xuất hiện

1591343857002.png



- Nếu vào add in thì hiện ra mục này:


1591343792783.png


Vậy theo bạn mình làm theo mục nào
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
10,775
Được thích
13,248
Điểm
4,868
"Không có" nghĩa là sao?
Dùng hàm Datedif thì nó ra #NAME?
(#NAME? là lỗi căn bản khi gõ một hàm mà Excel không tìm được)
 
Quảng cáo
Top Bottom