Я пытаюсь подсчитать количество часов, в течение которых машина использовалась с момента последней заправки. Я могу сделать это в Excel. Тем не менее, я хочу иметь возможность написать это в сценарии VBA.
Я знаю, как найти дату для определенного автомобиля в VBA. Тем не менее, существует несколько часов регистрации на одном автомобиле, все они должны быть сопоставлены с датой последней транзакции. На рисунке 1 я показал, как мне удалось сделать это прямо сейчас.
Таблица с часами:
Таблица с датой подачи топлива:
Я также пытался что-то написать на VBA, и это то, что я получил до сих пор. Очевидно, что-то идет не так (в основном потому, что я все еще новичок, когда дело доходит до VBA). Может ли кто-нибудь мне помочь?
VBA скрипт:
Function VBA(Name As Long)
' Setting the dimensions
Dim OperatorHours2 As String
Dim LastTransaction As String
Dim InBetween As Long
' Setting the lastrows
LastRow1 = Transactions.Range("B" & Rows.Count).End(xlUp).Row
LastRow2 = OperatorHours.Range("D" & Rows.Count).End(xlUp).Row
LastRow3 = OperatorHours.Range("B" & Rows.Count).End(xlUp).Row
LastRow4 = OperatorHours.Range("C" & Rows.Count).End(xlUp).Row
' Setting the Vlookup range
Set Lookup_Range1 = Transactions.Range("A2:B" & LastRow1)
Set Lookup_Range2 = OperatorHours.Range("A2:D" & LastRow2)
' Setting the range of start and end dates
Set Range1 = OperatorHours.Range("B2:B" & LastRow3)
Set Range2 = OperatorHours.Range("C2:C" & LastRow4)
'Vlookup for last date
LastTransaction = Application.WorksheetFunction.VLookup(Name, Lookup_Range1, 2, False)
' InBetween
If LastTransaction > Range1 And LastTransaction < Range2 Then
InBetween = 1
Else
InBetween = 0
' OperatorHours
OperatorHours2 = Range2 - LastTransaction
If InBetween = 1 Then
VBA = OperatorHours2
Else
VBA = Application.WorksheetFunction.Application.VLookup(Name, Lookup_Range2, 4, False)
End Function