Страницы: 1
RSS
Связь между накопительным итогом и формулой
 
Подскажите ребята как правильно сделать накопительный итог в ячейке,   если значения в соседней ячейке вводятся не в ручную, а вычисляются по   формуле? В приложенной книге для расчета накпоительного итога   используется макрос.

В ячейке А3 суммируются значения из ячеек  Е302 и Е303. В ячейке В3  должен с помощью макроса осуществляться  накопительный итог. Если в  ручную вводить значения в А3, то макрос  работает на ура. Но если  значения поступают через формулу, то  накопительного эффекта нет.

Чтобы было понятно приложил книгу с макросом.
 
Вопрос №1. Для этого требуются элементарные навыки использования отладчика. Ставите точки напротив всех If и смотрите, что не так  ;)
Проблема в этих строках:
Код
With Target
    If .Address(False, False) = "A3" Then

Вы повесили макрос на событие Worksheet_Change, у которого Target - это ячейка, которую непосредственно редактировали.
Если я стану курсором на ячейку E302 и нажму Ентер - у Target будет адрес E302. Указанный If вернет False и пересчет не сработает.

Как вариант можете создать статическую переменную и сохранять туда последнее значение ячейки A3, и вместо проверки адреса сравнивать текущее значение с последним. Если отличается - можно суммировать, Если такая логика подходит.

Вопрос №3.
Код
If Target.Value = "СТОП" Then
    [C3].Value = [B3].Value
    [B3].Value = 0
End If


Вопрос №2. В столбце С время не вводится, там формулы. Имеется в виду столбец В?
Изменено: serega124 - 11.08.2016 18:15:45
 
serega124,
Цитата
Вопрос №2. В столбце С время не вводится, там формулы. Имеется в виду столбец В?
да, в виду имелся именно столбец В.

Цитата
Как вариант можете создать статическую переменную и сохранять туда последнее значение ячейки A3, и вместо проверки адреса сравнивать текущее значение с последним. Если отличается - можно суммировать, Если такая логика подходит.
а как ее правильно вписать в макрос?
 
Цитата
Medvedoc написал: а как ее правильно вписать в макрос?
Так же, как и обычную переменную. Смотрите вложение.

Цитата
Medvedoc написал: да, в виду имелся именно столбец В.
Добавляете в функцию еще один If
Код
If Target.Column = 2 And Not IsEmpty(Target) And (Target.Value <> 0 Or Target.Value <> 1) Then
   Rows(Target.Row + 1 & ":" & Target.Row + 1).Select
   Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
   Tagret.Select
End If
Страницы: 1
Наверх