Đỗ Thúy Quỳnh
Đỗ Thúy Quỳnh
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 324 lượt xem

Hướng dẫn tính tuổi trước ngày 1/1/1900 trong Excel

Oct 08 2020

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

Cùng tham gia cộng đồng hỏi đáp về chủ đề Excel Cơ Bản

Thảo luận 0 câu trả lời
Lượt xem 324 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội