-2

Как я могу перевести этот алгоритм для применения в 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

На рисунке ниже приведен пример данных о времени:

данные

2 ответа2

1

В ячейке D1:

=IF(ROUND((A1-C1)*24*60,1) = 30, B1,"")

Затем перетащите его вниз для всех ваших ценностей.

Для этого требуется A1 - C1, который даст вам десятичное представление во времени, умножит его на 24 и 60, чтобы получить в минутах, округляет до ближайшей целой минуты и, наконец, оценивает, если это 30. Если это так, отображается B1, если нет - пустая ячейка.

В зависимости от вашего использования вам может понадобиться использовать <или> для включения значений, которые не совсем 30.

0

Я сделал это, и это прекрасно работает:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .