Как перезапустить число, если значение ячейки = 0
Смотрел, как делать это весь день.
Я пытаюсь получить автоматический сброс, если ячейка попадает на 0, но я просто не могу найти формулу или VBA, чтобы помочь в этом.
A1 9 B1 9 C1 0 D1 9 E1 9 F1 9 G1 9 H1 36 (I would like it to = 36, resetting at any cell showing 0 and not show 54
В полях A1: G1 ежедневно работают часы в списке, в H1 – часы, полностью обработанные на этой неделе. (Однако я пытаюсь установить этот сброс, если есть 0-часовой день / День отдыха)
- Показать данные фильтра столбца Excel в ячейках
- Как сортировать коллекцию?
- Excel VBA: Parsed JSON Object Loop
- Количество строк по отфильтрованным данным
- Как вы снимаете защиту макросов VBA для книги с поддержкой макросов, если вы забыли пароль?
Есть ли формула, которая может это сделать?
- Когда переменная Excel VBA должна быть убита или установлена в Nothing?
- Почему у меня возникают проблемы с назначением диапазона для массива вариантов
- Проблемы с макросом веб-запросов
- Редактор VBA автоматически удаляет пробелы на концах строк
- Дождитесь завершения Application.Calculate
- Получить веб-страницу, включая контент AJAX
- Как скопировать листы в другую книгу с помощью vba?
- Как я могу создать функцию щелчка между подсказкой ввода-вывода A1-A10 для ввода пользователем чисел в vba
Мы можем использовать строку «помощник». В A2 введите: =A1
в B2 введите:
=IF(B1=0,0,B1+A2)
И копировать. Наконец, в H1 введите: =G2
Wih BVA / Макросы
Public Function sumreset(dataRange As Range) totalSum = 0 totalLength = -1 indicator = "none" totalLengthRows = dataRange.Rows.Count totalLengthCols = dataRange.Columns.Count If (totalLengthRows = 1) And (totalLengthCols > 1) Then totalLength = totalLengthCols indicator = "cols" ElseIf (totalLengthRows > 1) And (totalLengthCols = 1) Then totalLength = totalLengthRows indicator = "rows" End If For i = totalLength To 1 Step -1 Select Case indicator Case "rows" nextData = dataRange(i, 1) Case "cols" nextData = dataRange(1, i) End Select If nextData <> 0 Then totalSum = totalSum + nextData Else i = 1 End If Next i sumreset = totalSum End Function
Откройте VBA / Макросы с помощью ALT + F11, в разделе ThisWorkbook вставьте модуль и вставьте этот код с правой стороны.
На ячейке H1 put =sumreset($A$1:$G$1)
и все.
Вот простой макрос, который будет делать именно то, что вы хотите. Это работает с горизонтальным или вертикальным диапазоном
Function SumAfterZero(rng As Range) As Double Dim r As Range Dim output As Double For Each r In rng If r = 0 Then output = 0 Else output = output + r End If Next r SumAfterZero = output End Function
Как и выше, просто положите =SumAfterZero(A1:G1)
в ячейку H1.