Hàm DATEDIFF là một trong những hàm thời gian thường gặp trong Excel, được sử dụng để tính khoảng cách giữa 2 mốc thời gian. Ngoài ra, cũng có một hàm với chức năng tương tự hàm DATEIF, đó là hàm DATEDIFF trong VBA. Rất dễ bị nhầm lẫn 2 hàm này với nhau vì chức năng và tên gọi tương đối giống nhau. Trong bài viết này, Gitiho sẽ giới thiệu tới bạn hàm DATEDIFF trong VBA, cú pháp và ứng dụng của hàm DATEDIFF trong VBA Excel.
Tuyệt đỉnh VBA - Viết Code trong tầm tay
Hàm DATEDIFF trong VBA
Cú pháp hàm DATEDIFF trong VBA
Hàm DATEDIFF trong VBA được viết như sau:
=DATEDIFF(interver, date 1, date 2, [first_day_of_week], [first_week_of_year])
Trong đó:
- Interval: Là đại lượng tính để tính khoảng thời gian cần tìm (Ngày, tháng, năm, quý, giờ, phút...). Các đại lượng này khi dùng trong công thức của hàm DATEDIFF tronG VBA được biểu diễn bằng cách ký hiệu như sau:
- yyyy: Số năm - y: Số ngày trong năm
- q: Qúy
- m: Số tháng
- ww: Số tuần - w: Ngày trong tuần (thứ mấy)
- d: Số ngày
- h: Số giờ
- n: Số phút
- s: Số giây
- Date 1, date 2: Mốc thời gian cần xét
- First_day_of_week (Tham số tùy chọn, không bắt buộc phải có): Tham số sử dụng để thiết lập ngày đầu tuần là thứ mấy. Nếu bỏ qua tham số này, không điền thì VBA sẽ mặc định ngày đầu tiên của tuần là Chủ nhật. Các giá trị có thể sử dụng cho tham số này trong công thức hàm DATEDIFF trong VBA:
- 0 = vbUseSystemDayOfWeek – Sử dụng cài đặt API hỗ trợ ngôn ngữ quốc gia (NLS).
- 1 = vbSunday – Sunday
- 2 = vbMonday – Monday
- 3 = vbTuesday – Tuesday
- 4 = vbWednesday – Wednesday
- 5 = vbThursday – Thursday
- 6 = vbFriday – Friday
- 7 = vbSaturday – Saturday
Xem thêm: Giới thiệu cách sử dụng Autofilter giữa các khoảng thời gian trong VBA
- First_week_of_year (Tham số tùy chọn, không bắt buộc phải có): Tham số sử dụng để thiết lập tuần đầy tiên của năm là tuần chứa ngày nào. Nếu bỏ qua tham số này, không điền thì VBA sẽ mặc định tuần đầu tiên của năm là tuần chứa ngày mùng 1 tháng 1. Nếu muốn sử dụng tham số này trong hàm DATEDIFF trong VBA, bạn có thể sử dụng những giá trị dưới đây:
- 0 = vbUseSystem – Sử dụng cài đặt API hỗ trợ ngôn ngữ quốc gia (NLS).
- 1 = vbFirstJan1 – Tuần đầu tiên là tuần chứa ngày mùng 1 tháng 1 (Mặc định)
- 2 = vbFirstFourDays – Tuần đầu tiên là tuần có ít nhất 4 ngày thuộc năm mới
- 3 = vbFirstFullWeek – Tuần đầu tiên là tuần đầu tiênđầy đủ ngày thuộc năm mới
- Hàm DATEDIFF trong VBA sẽ trả về kết quả là 1 con số
Xem thêm: Hướng dẫn cách gọi Sub trong VBA qua các ví dụ
Ví dụ
Ta sử dụng hàm DATEDIFF trong VBA như sau:
Private Sub Constant_demo_Click()
fromDate = "01-Jan-09 00:00:00"
toDate = "01-Jan-10 23:59:00"
msgbox("Line 1 : " &DateDiff("yyyy",fromDate,toDate))
msgbox("Line 2 : " &DateDiff("q",fromDate,toDate))
msgbox("Line 3 : " &DateDiff("m",fromDate,toDate))
msgbox("Line 4 : " &DateDiff("y",fromDate,toDate))
msgbox("Line 5 : " &DateDiff("d",fromDate,toDate))
msgbox("Line 6 : " &DateDiff("w",fromDate,toDate))
msgbox("Line 7 : " &DateDiff("ww",fromDate,toDate))
msgbox("Line 8 : " &DateDiff("h",fromDate,toDate))
msgbox("Line 9 : " &DateDiff("n",fromDate,toDate))
msgbox("Line 10 : "&DateDiff("s",fromDate,toDate))
Kết quả trả về:
Line 1 : 1
Line 2 : 4
Line 3 : 12
Line 4 : 365
Line 5 : 365
Line 6 : 52
Line 7 : 52
Line 8 : 8783
Line 9 : 527039
Line 10 : 31622340
Ví dụ về ứng dụng của hàm DATEDIFF trong VBA
Ví dụ 1: Sử dụng hàm DATEDIFF trong VBA để tính khoảng cách giữa 2 thời điểm (theo số năm)
Cho 2 mốc thời gian là 22/11/2003 và 22/11/2013. Tính số năm giữa 2 mốc thời gian này. Ta sẽ có công thức như sau:
=DATEDIFF("yyyy", "22/11/2003", "22/11/2013")

Trong đó:
- yyyy: Là ký hiệu đại diện cho số năm
- 22/11/2003 và 22/11/2013 lần lượt là Date 1, Date 2 trong cú pháp hàm DATEDIFF trong VBA.
- Kết quả trả về là 10.
Ví dụ 2: Sử dụng hàm DATEDIFF trong VBA để tính khoảng cách giữa 2 thời điểm (theo số tháng)
Cho 2 mốc thời gian là 22/11/2016 và 15/09/2018. Tính số tháng giữa 2 mốc thời gian này. Ta có sub như sau:
Sub DADEDIFF_Test_02()
Range("A2"). Value = DATEDIFF("m", "22/11/2016", "15/09/2018")
End Sub
Kết quả trả về giá trị ô tại A2 đã được gắn là 22.
Cách viết hàm tự tạo dựa trên hàm DATEDIFF trong VBA
Chúng ta có thể dễ dàng tạo ra thêm hàm tự tạo theo ý muốn để phục vụ cho việc tính khoảng cách giữa 2 mốc thời gian được nhanh chóng và tiện lợi hơn bằng cách viết Function trong VBA dựa trên công thức hàm DATEDIFF trong VBA
Ví dụ, muốn viết hàm xác định khoảng cách số ngày giữa 2 mốc thời gian, ta sẽ viết Function sau đây vào 1 Module của VBA:
Function KhoangCachNgay (NgayBD as Date, NgayKT as Date) as Long
KhoangCachNgay = DATEDIFF("d", NgayBD, NgayKT)
End Function

Xem thêm: Làm thế nào chèn code vào module trong VBA Excel
Tổng kết
Như vậy, trong bài viết trên, Gitiho đã giới thiệu tới bạn một hàm vừa lạ vừa quen trong VBA Excel - Hàm DATEDIFF trong VBA. Việc áp dụng hàm DATEDIFF trong VBA làm cho việc tính khoảng cách giữa 2 mốc thời gian trở nên nhanh chóng và tiện lợi hơn rất nhiều đó!
Sử dụng VBA trong Excel giúp cho quá trình làm việc với bảng tính Excel trở nên đơn giản và nhanh chóng hơn rất là nhiều, kể cả những tệp Excel với rất nhiều bảng tính và nhiều dữ liệu. Để tìm hiểu công cụ cực kì hữu ích này, hãy tham gia khóa học Tuyệt đỉnh VBA - Viết Code trong tầm tay để làm quen với VBA từ A tới Z và ứng dụng thành thạo VBA vào Excel nhé!
Tài liệu kèm theo bài viết
Cùng tham gia cộng đồng hỏi đáp về chủ đề VBA