Как я могу перевести этот алгоритм для применения в Microsoft Excel:
For each value in A:A
Check values in C:C
If A[i] - C[j] = 30 minutes
Then D[j] = B[i]
Iterate
На рисунке ниже приведен пример данных о времени:
Как я могу перевести этот алгоритм для применения в Microsoft Excel:
For each value in A:A
Check values in C:C
If A[i] - C[j] = 30 minutes
Then D[j] = B[i]
Iterate
На рисунке ниже приведен пример данных о времени:
В ячейке D1:
=IF(ROUND((A1-C1)*24*60,1) = 30, B1,"")
Затем перетащите его вниз для всех ваших ценностей.
Для этого требуется A1 - C1, который даст вам десятичное представление во времени, умножит его на 24 и 60, чтобы получить в минутах, округляет до ближайшей целой минуты и, наконец, оценивает, если это 30. Если это так, отображается B1, если нет - пустая ячейка.
В зависимости от вашего использования вам может понадобиться использовать <или> для включения значений, которые не совсем 30.
Я сделал это, и это прекрасно работает:
Sub Process()
Dim i,j,N,M as Integer
Dim Time_Diff as Integer
Dim TimeA,TimeC as Date
For i = 1 to 5
TimeA=worksheets("Data").Range("A"&i).Value
For j = 1 to 17
TimeC=worksheets("Data").Range("C"&j).Value
if Datediff("n",TimeA,TimeC) = 30 then
worksheets("Data").Range("D"&j)=worksheets("Data").Range("B"&i)
Goto SkipThis
End if
Next j
SkipThis:
Next i
End sub