Chúng ta không thể nhập ngày tháng trước ngày 1/1/1900 trong Excel, thậm chí việc tính toán liên quan đến những ngày đó cũng không thể chính xác. Trong trường hợp ta cần tính tuổi của người được sinh và mất trước ngày 1/1/1900 thì Excel sẽ trả cho ta kết quả không chính xác. Để giải quyết tình huống này, gitiho.com hướng dẫn bạn cách tính tuổi trước ngày 1/1/1990 trong Excel một cách dễ dàng và đơn giản nhất.
Ở đây chúng ta sẽ sử dụng mã VBA để tính nhanh tuổi trước ngày 1/1/1900. Để thực hiện ta làm theo các bước sau:
Bước 1: Chọn một ô tróng và nhập vào ngày sinh của người đó, sau đó chọn ô trống khác nhập ngày hiện tại hoặc ngày mất của người đó, tùy theo nhu cầu của bạn. Giống như hình dưới đây:
Bước 2: Nhấn tổ hợp phím Alt và F11 để mở cửa sổ Microsoft Visual Basic for Applications.
Tuy nhiên nếu phím tắt của bạn không hoạt động hoặc tab DEVELOPER chưa được mở thì bạn hãy thực hiện các thao tác sau:
1. Chọn thẻ File trên thanh công cụ, chọn Option. Trong mục Option này ta chọn Customize Ribbon. Hoặc một cách khác là kích chuột phải vào vị trí bất kỳ trên thanh công cụ và chọn mục Customize Ribbon. Như hình minh họa dưới đây:
2. Lúc này sẽ xuất hiện cửa sổ mới là Excel Options, ta chọn thẻ Customize the Ribbon, ta tích chọn vào thẻ Developer như trong hình dưới.
Như vậy trên thanh công cụ của chúng ta đã có thểm một tab mới là tab Developer.
3. Để mở ứng dụng VBA trong Excel ta nhấn tổ hợp phím Alt và F11 hoặc chọn mục Visua Basic trên thẻ Developer.
Lúc này một cửa sổ mới được mở ra, ta sẽ thực hiện tiếp bước 2 tại đây.
Bước 3: Nhấn Insert, chọn Module. Sau đó sao chép và dán đoạn mã VBA dưới đây vào cửa sổ Module mới được mở ra.
VBA: Tính tuổi trước ngày 1/1/1900
Public Function AgeFunc(SDate As Variant, EDate As Variant) As Long
'UpdatebyExtendOffice20160429
Dim xSMonth As Integer
Dim xSDay As Integer
Dim xSYear As Integer
Dim xEMonth As Integer
Dim xEDay As Integer
Dim xEYear As Integer
Dim xAge As Integer
If Not GetDate(SDate, xSYear, xSMonth, xSDay) Then
AgeFunc = "Invalid Date"
Exit Function
End If
If Not GetDate(EDate, xEYear, xEMonth, xEDay) Then
AgeFunc = "Invalid Date"
Exit Function
End If
xAge = xEYear - xSYear
If xSMonth > xEMonth Then
xAge = xAge - 1
ElseIf xSMonth = xEMonth Then
If xSDay > xEDay Then xAge = xAge - 1
End If
If xAge < 0 Then
AgeFunc = "Invalid Date"
Else
AgeFunc = xAge
End If
End Function
Private Function GetDate(ByVal DateStr As String, Y As Integer, M As Integer, D As Integer) As Boolean
Dim I As Long
Dim K As Long
Y = 0
M = 0
D = 0
GetDate = True
On Error Resume Next
I = InStr(1, DateStr, "/")
M = CLng(Left(DateStr, I - 1))
D = CLng(Mid(DateStr, I + 1, InStr(I + 1, DateStr, "/") - I - 1))
Y = CLng(Right(DateStr, Len(DateStr) - InStrRev(DateStr, "/")))
If M < 1 Or M > 12 Or D < 1 Or D > 31 Or Y < 1 Then
GetDate = False
End If
End Function
Bước 4: Chọn một ô trống, như trong ví dụ này của chúng ta là ô C2. Ta nhập công thức này vào đó:
=AgeFunc(A2,B2)
Trong đó A2 là ngày sinh và B2 là ngày mất. Rồi nhấn nút Enter để lấy kết quả tuổi thọ. Nhấn chuột giữ chốt của ô C2 này và kéo xuống cho đến hết phạm vi mà ta cần tính tuổi thọ. Giống như hình minh họa dưới đây:
Chú ý: Mã VBA này chỉ tính được năm với thời gian được định dạng kiểu: mm/dd/yyyy (ví dụ như là 6/23/1845).
Có thể bạn sẽ cần: Học VBA online
Khóa học liên quan