Как сравнить дату "VLOOKUP" с несколькими значениями в VBA? - PullRequest
1 голос
/ 28 октября 2019

Я пытаюсь подсчитать количество часов, в течение которых машина использовалась с момента последней заправки. Я могу сделать это в Excel. Тем не менее, я хочу иметь возможность написать это в сценарии VBA.

Я знаю, как найти дату для определенного автомобиля в VBA. Тем не менее, существует несколько часов регистрации на одном автомобиле, все они должны быть сопоставлены с датой последней транзакции. На рисунке 1 я показал, как мне удалось сделать это прямо сейчас.

Таблица с часами:
Table with hours

Таблица с датой подачи топлива:
Table with fuel date

Я также пытался что-то написать на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...