VBA формула для расчета возраста от даты рождения - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть Дата рождения и я хочу применить эту формулу

=(YEAR(NOW())-YEAR(A2))

в VBA для расчета возраста для всей строки дат

например

      A           B
1  BornDate      Age
2  09.06.1991    28
3  02.07.1973
4
5

мой кодработает только для первых двух и останавливается без ошибок.

Sub btn_GetAge()

    Dim LastRow As Long

    With ThisWorkbook.Worksheets("Sheet1")
    LastRow = .Cells(.Rows.Count).End(xlUp).Row
    .Range("B2:B" & LastRow) = "=(YEAR(NOW())-YEAR(A1))"
    End With

End Sub

Любая идея или выбрать другую формулу?

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Вы были очень близки:

Sub btn_GetAge()

    Dim LastRow As Long

    With ThisWorkbook.Worksheets("Sheet1")
        LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
        .Range("B2:B" & LastRow) = "=YEAR(TODAY())-YEAR(A2)"
    End With

End Sub

enter image description here

0 голосов
/ 05 февраля 2019

Попробуйте:

Option Explicit

Sub Test()

    Dim Lastrow As Long, i As Long
    Dim CurrenctYear As Long, LoopYear As Long

    With ThisWorkbook.Worksheets("Sheet1")

        Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
            CurrenctYear = Year(Now)

        For i = 1 To Lastrow
            LoopYear = Year(.Range("A" & i).Value)
            .Range("A" & i).Offset(0, 1).Value = CurrenctYear - LoopYear
        Next i

    End With

End Sub
0 голосов
/ 05 февраля 2019

1) Для ячеек требуется строка и столбец, например, А1 - это ячейки (1,1)

2) Ваша формула (и лучше указать свойство) начинается со строки 2, но относится к А1

Sub btn_GetAge()

Dim LastRow As Long

With ThisWorkbook.Worksheets("Sheet1")
    LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    .Range("B2:B" & LastRow).Formula = "=(YEAR(NOW())-YEAR(A2))"
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...