Robert thích làm việc về phả hệ. Đôi khi anh ta tìm thấy một nghĩa trang cũ hơn, thay vì ngày sinh và ngày mất được hiển thị trên bia mộ, chỉ cần nhìn thấy một ngày và một tuổi. Ví dụ: “sinh: 18 tháng 1, 1801, chết 81 tuổi, 11 tháng, 17 ngày” hoặc “tuổi: 93 tuổi, 8 tháng, 22 ngày, mất ngày 18 tháng 3 năm 1901”. Robert đang tự hỏi liệu có cách nào để tính ngày còn thiếu đến ngày hay không.

Có một cách để làm điều này, nhưng nó không liên quan đến việc sử dụng các hàm trang tính thông thường. Trong khi Excel bao gồm nhiều loại hàm trang tính cho phép bạn thao tác với ngày tháng, thì “ngày cơ bản” cho Excel là ngày 1 tháng 1 năm 1900; đây là ngày mà từ đó tất cả các ngày được tính toán. (Bạn có thể thay đổi ngày cơ sở, nhưng chỉ sau bốn năm, thành 1904. Khả năng này được cung cấp để tương thích với Excel trên Mac.) Điều này có nghĩa là những ngày cũ hơn — chẳng hạn như những ngày bạn tìm thấy trong nghĩa trang cho mục đích gia phả — có thể không được tính trực tiếp trong Excel.

May mắn thay, VBA không có hạn chế này. Điều này có nghĩa là bạn có thể dễ dàng tạo một hàm do người dùng xác định (một macro) sẽ thực hiện phép toán cho bạn. Bắt đầu bằng cách đặt ngày bắt đầu (ngày sinh hoặc ngày mất)

trong ô B1. Sau đó, trong các ô B2: B4, hãy nhập số năm, tháng và ngày mà bạn muốn điều chỉnh ngày bắt đầu. Do đó, nếu B1 chứa ngày sinh, thì các ô B2: B4 phải là số dương (bạn muốn thêm chúng vào ngày bắt đầu). Nếu B1 chứa ngày chết, thì B2: B4 phải là số âm (bạn muốn trừ chúng khỏi ngày bắt đầu).

Sau đó, tạo macro này:

Function FindDate(Start As Date, iYrs As Integer, _   iMths As Integer, iDays As Integer)



Application.Volatile     Dim D As Date

D = DateAdd("yyyy", iYrs, Start)

D = DateAdd("m", iMths, D)

D = DateAdd("d", iDays, D)



FindDate = Format(D, "m/d/yyyy")

End Function

Trong bất kỳ ô nào bạn muốn hiển thị ngày đã tính, bạn có thể nhập công thức sau:

=FindDate(B1,B2,B3,B4)

Kết quả của hàm là một ngày được định dạng đại diện cho ngày bắt đầu được điều chỉnh theo năm, tháng và ngày bạn chỉ định. Vì vậy, nếu ô B1 chứa 1/18/1801, ô B2 chứa 81, ô B3 chứa 11 và ô B4 chứa 17, thì hàm sẽ trả về 1/4/1883. Tương tự, nếu ô B1 chứa 3/18/1901, ô B2 chứa -93, ô B3 chứa -8 và ô B4 chứa -22, thì kết quả trả về sẽ là 6/26/1807.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (12277) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.