1

Я хочу, чтобы в моей таблице была ячейка, которая обновляется накопительным образом в ответ на изменение значений в другой ячейке. Каким будет код для этой ячейки?

Например, исходное значение ячейки B2 равно 3, а ячейка C2 показывает совокупное значение всех чисел, введенных в ячейку B2. Поэтому изначально C2 покажет 3. Как только значение B2 изменяется на 10, C2 отображает 13 и так далее.

1 ответ1

2

Это потребует VBA.

Нечто подобное будет работать, оно идет в модуле Sheet1 через редактор VBA *. Вы можете изменить имя листа и диапазоны по мере необходимости. -

Sub worksheet_change(ByVal target As Range)
    If Not Intersect(target, Range("B2")) Is Nothing Then
        Range("C2") = Range("C2").Value + target.Value
    End If
End Sub

Однако это приведет к ошибке, если цель не числовая. Таким образом, вы должны обработать ошибки, как это -

Sub worksheet_change(ByVal target As Range)
    If Not Intersect(target, Range("B2")) Is Nothing Then
        If IsNumeric(target.Value) = False Then GoTo Error:
        If IsNumeric(Range("C2").Value) = False Then GoTo Error:
        Range("C2") = Range("C2").Value + target.Value
        Exit Sub
    Else: Exit Sub
    End If

Error:
    MsgBox ("Use a number!")
End Sub

* Чтобы попасть в редактор VBA, необходимо перейти к кнопке office, параметрам Excel и в популярном теге установить флажок рядом с Show Developer tab in the Ribbon . Затем закройте его, перейдите на вкладку разработчика и нажмите кнопку Visual Basic в крайнем левом углу. Откроется редактор, и вам нужно будет дважды щелкнуть модуль Sheet1 (или любой другой лист, на котором он находится) на левой панели.

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