Формула, чтобы найти одинаковые даты в одном столбце, а затем рассчитать разницу между мин / макс - PullRequest
0 голосов
/ 28 августа 2018

Кто-нибудь знает лучший способ иметь Excel:

  1. Посмотрите в одном столбце, чтобы найти все похожие даты

  2. Рассчитать общее время между минимальной датой и максимальным датой

  3. Поместите итог в отдельный столбец

C                                     D 
8/27/2018 14:02       insert total time for each date here, ie:  8/27 00:05:03
8/27/2018 14:01     
8/27/2018 14:01     
8/27/2018 13:57     
8/27/2018 8:56      
8/24/2018 10:01 
8/24/2018 9:36      
8/23/2018 6:01  
8/21/2018 12:32 
8/21/2018 11:23     
8/20/2018 14:03 
8/20/2018 10:54     
8/17/2018 14:47 

Я использовал =TEXT(C7-C8, "h:mm:ss"), но у меня это совсем не работает. Буду ли я добавить vlookup к нему?

1 Ответ

0 голосов
/ 28 августа 2018

Для этого решения потребуется создать UDF (пользовательскую функцию) в VBA.

По сути, вы будете циклически искать все подходящие даты в вашем столбце. На все совпадающие даты вы будете изменять переменные minDt и maxDt по мере необходимости, если новое время будет меньше или больше того, что вы сохранили в данный момент.

Это, вероятно, не лучшее решение, поскольку создание UDF, содержащего цикл, будет своего рода узким местом, но это то, что я могу придумать в данный момент.

Option Explicit

Function getTimeDiff(col As String, inputDt As Date)

    Dim colRng As Range, compDt As Date
    Set colRng = Columns(col)

    compDt = Int(inputDt)   '<-- Converts date/time to date only

    Dim cel As Range, maxDt As Date, minDt As Date, tmpDt As Date
    maxDt = inputDt
    minDt = inputDt
    For Each cel In colRng.Cells
        If cel = "" Then Exit For
        tmpDt = CDate(cel)
        If Int(tmpDt) = compDt Then
            If tmpDt > maxDt Then 
                maxDt = tmpDt
            ElseIf tmpDt < minDt Then 
                minDt = tmpDt
            End If
        End If
    Next cel

    getTimeDiff = Format(maxDt - minDt, "h:mm")

End Function

Читайте здесь о создании UDF

Если вы знакомы с UDF, вы можете пропустить этот раздел

  • Нажмите Alt + F11 , чтобы открыть VBA.
  • В VBE нажмите Вставить > Модуль
  • Вставьте приведенный выше код в модуль
  • Сохранить как Macro-Enabled Workbook

После того, как вы сохранили UDF, теперь вы можете использовать вновь созданную формулу.

Похоже, что ваши даты указаны в столбце C. Таким образом, если ваша первая дата была в C2, ваша формула для D2 была бы:

=getTimeDiff("C", C2)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...