Sửa lỗi hàm DateAdd (1 người xem)

Liên hệ QC

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

truonggiang73

Thành viên hoạt động
Tham gia
27/6/09
Bài viết
113
Được thích
35
Tôi muốn đưa ngày tháng (dd/mm/yyyy) có sẵn về ngày cuối cùng của tháng đó bằng hàm DateAdd như sau:


1, Range("B2").Offset(I - 1, 0).Value = DateAdd("m", Month(Range("A2").Offset(I - 1, 0).Value), 1 / 1 / 2016) 'KQ1
2, Range("B2").Offset(I - 1, 1).Value = DateAdd("m", Month(Range("A2").Offset(I - 1, 1).Value), 1 / 1 / 2016) + 42369 'KQ2

Nhờ mọi người giải thích giúp cho:
- KQ1 cho ngày tháng năm 1900 chứ không phải năm 2016 mà phải cộng thêm 42.369, kết quả không cho chẵn ngày mà có lẻ giờ, phút.
- Từ tháng 3 trở đi không cho ngày cuối tháng mà vào ngày 30.
Nhờ mọi người giúp tôi sửa lại code để có kết quả trả về đúng ngày cuối tháng với.
 

File đính kèm

Bạn chỉ cần lấy ngày đầu tiên của tháng kế tiếp trừ đi 1 là ra ngày cuối cùng của tháng đó rùi.
DATEADD("d",-1,DATEVALUE(YEAR(Range("A2").Offset(I - 1, 0).Value),MONTH(Range("A2").Offset(I - 1, 0).Value)+1,1))

Tôi muốn đưa ngày tháng (dd/mm/yyyy) có sẵn về ngày cuối cùng của tháng đó bằng hàm DateAdd như sau:




Nhờ mọi người giải thích giúp cho:
- KQ1 cho ngày tháng năm 1900 chứ không phải năm 2016 mà phải cộng thêm 42.369, kết quả không cho chẵn ngày mà có lẻ giờ, phút.
- Từ tháng 3 trở đi không cho ngày cuối tháng mà vào ngày 30.
Nhờ mọi người giúp tôi sửa lại code để có kết quả trả về đúng ngày cuối tháng với.
 
Upvote 0
Trước tiên bạn phải tìm hiểu cấu trúc DateAdd đã, bạn đọc ở đây:
https://msdn.microsoft.com/en-us/library/office/gg251759(v=office.15).aspx

Sau đó bạn cần biết khi ghi dữ liệu dạng date trong VBA phải để trong dấu "#" kiểu như #date#

- Về vấn đề ngày cuối tháng thì bạn lấy ngày 0 của tháng kế tiếp là được. Dạng như:
Mã:
DateSerial(Year([A2]), Month([A2]) + 1, 0)
 
Upvote 0
Web KT

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

Back
Top Bottom