Определите дату как четверг и суммируйте последние 6 дней - PullRequest
0 голосов
/ 13 июня 2019

У меня есть таблица с несколькими кодами операций и ее часами, и мне нужно каждый четверг суммировать часы, потраченные на каждый код.

Несмотря на то, что я смог разобраться с формулой IF, я справился бы с суммой диапазонов, но я мог бы заставить ее работать через VBA, но я не могу применить это же решение к Формуле:

WorksheetFunction.Sum (Range ("E" & cCell.Row & ": E" & cCell.Row - 6))

Dim Counter As Integer
Dim cCell As Range
Dim intToday As Integer
Dim CountDate As Integer
Dim strWsName As String
strWsName = ActiveSheet.Name
Dim xWs As Worksheet
Set xWs = Worksheets(strWsName)

'Clause 101
    For Counter = 4 To 34
        Set cCell = xWs.Cells(Counter, 4)
            If WorksheetFunction.WeekDay(cCell.Value) = 5 Then
                If cCell.Row = 4 Then
                      xWs.Range("Q" & cCell.Row) = WorksheetFunction.Sum(Range("E" & cCell.Row & ":E" & cCell.Row))
                Else
                        If cCell.Row >= 34 Then
                              xWs.Range("Q" & cCell.Row) = WorksheetFunction.Sum(Range("E" & cCell.Row & ":E" & cCell.Row))
                        Else
                            If cCell.Row - 6 <= 0 Then
                                xWs.Range("Q" & cCell.Row) = WorksheetFunction.Sum(Range("E" & cCell.Row & ":E4"))
                              Else
                                xWs.Range("Q" & cCell.Row) = WorksheetFunction.Sum(Range("E" & cCell.Row & ":E" & cCell.Row - 6))
                              End If
                        End If
                End If
            End If
    Next Counter
End Sub

Я хотел бы знать, как я могу преобразовать этокусок кода к формуле в Excel.

1 Ответ

0 голосов
/ 13 июня 2019

После исследования формул и диапазонов переменных мне удалось установить эту формулу, и она работает как шарм:

= ЕСЛИ (ДЕНЬНЕД ($ D9) = 5; ЕСЛИ (СТРОКА (Е9) <= 6; СУММЫ (OFFSET (E9 ;;; - СТРОКА ())); СУММЫ (OFFSET (Е9 ;;; -7))); "") </strong>

ПРИМЕЧАНИЕ. В настройках моей локали используется ";" вместо "," в формулах, поэтому имейте в виду, что вы должны изменить его на свои настройки локали.

Объяснение:

Формула "= IF (WEEKDAY ($ D9) = 5") оценивает, является ли дата четвергом, если это не так, то будет выделяться "" в столбце;

Условие IF (ROW (E9) <= 6 будет служить для определения пределов в верхней части моей электронной таблицы, в зависимости от его значения будет СУММА различных диапазонов: </p>

  • Если строка даты меньше 6, она запустится так: SUM (OFFSET (E9 ;;; - ROW ())). Смещение будет таким же, как строка, в которой дата:
  • Теперь, если строка больше 6, тогда я смогу установить фиксированный смещение 7 строк: SUM (OFFSET (E9 ;;; - 7))

Если нужно изменить расчет на среду, все, что вам нужно сделать, это изменить число «5» на «= IF (WEEKDAY ($ D9) = 5» числа предполагаемых дней недели, вот список:

  • 1 по воскресеньям
  • 2 по понедельникам
  • 3 по вторникам
  • 4 по средам
  • 5 по четвергам
  • 6 по пятницам
  • 7 по субботам

Благодаря статьям, найденным в Excel Jet и Extend Office, мне удалось создать это решение!

Я надеюсь, что больше людей смогут использовать это решение!

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