У меня есть «столбец I» с данными для даты переделки и «столбец G» для даты сборки.В «столбце J» я хочу, чтобы результат использования «Дата доработки» находил дату, ближайшую к столбцу «Дата сборки», не переходя.Это может быть та же самая дата, что и сборка, или только что не законченная.Чтобы связать их вместе, «Серийный Rework» должен быть точно таким же, как «Серийный» в «столбце E».Примечание: мне нужно время там, так как некоторые случаи, которые происходят в один и тот же день, будут иметь разное время.
Я пытался использовать «Дата восстановления», чтобы просмотреть всю «Дату сборки»столбец и после того, как он сравнил каждый из них, он возвратил максимум, если он не превышал, а серийные номера были одинаковыми.Я не знал, как использовать одну переделку, чтобы просмотреть другой столбец с этими деталями, перейти к следующей дате переделки и сделать то же самое.
Я создал несколько столбцов, которые затем просматривали данныесделал vlookup на максимуме, но это привело бы к созданию столбца для каждой переделки в столбце, и это было бы слишком.Я мог бы обдумать это, но некоторые входные данные будут высоко оценены.
На рисунке показан фрагмент кода, который я пробовал вместе с Excel какВ целом я работаю с.В нем показан метод создания столбцов для экземпляра «Дата восстановления».
Попытка использовать VBA для просмотра всего столбца Serial и посмотреть, равен ли он Rework Serial, затем объединить это значение в столбце «L»..
Отсюда я надеялся также сравнить дату и вернуть значение даты, что это максимум, не переходя.Этот код работает для возврата в одну ячейку, как это будет сделано для каждой ячейки для каждой переделки?
Я получил дальнейшее, но по какой-то причине каждый третий раз в цикле он выдает ошибку
AssemD = DateValue(Cells(x,7))
с несоответствием типов.Я не понимаю этого, так как он работает без цикла For Each j, но я пытаюсь вложить его так, чтобы после того, как он выполнил все свои сравнения и нашел максимум, он затем записал этот максимум в Cells (y, 12), который являетсяу счетчик, который идет в ногу с J.
Sub RecentDate()
Dim i As Range, j As Range, x As Integer, y As Integer, AssemD As Date, ReworkD As Double, AssemTi As Double, ReworkTi As Double, AssemTot As Double, ReworkTot As Double, MaxDate As Date
x = 1
y = 1
'Set i = Range("E1:E12")
For Each j In Range("I1:I12")
For Each i In Range("G1:G12")
AssemD = DateValue(Cells(x, 7))
ReworkD = DateValue(Cells(1, 9))
AssemTi = TimeValue(Cells(x, 7))
ReworkTi = TimeValue(Cells(1, 9))
AssemTot = CDbl(AssemD) + CDbl(AssemTi)
ReworkTot = CDbl(ReworkD) + CDbl(ReworkTi)
If ReworkTot >= AssemTot And Cells(1, 8) = Cells(x, 5) Then
MaxDate = Cells(x, 7)
End If
Cells(x, 13) = MaxDate
x = x + 1
Next i
Cells(y, 12) = MaxDate
y = y + 1
Next j
End Sub