Если вы согласны с небольшим количеством кода VBA, вы можете попробовать вставить приведенный ниже код в модуль рабочей таблицы для листа, в который вы вводите данные:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
' Assumes "daily sales" are entered into cell B2 and that "running total" is in cell A2
If Not (Intersect(Target, Me.Range("B2")) Is Nothing) Then
Me.Range("A2").Value2 = Application.Sum(Me.Range("A2").Value2, Target.Value2)
End If
End Sub
(Одновременное нажатие Alt + F11
должно открыть редактор, затем вы можете найти модули рабочего листа слева).
Если вы затем введете число в ячейку B2
, тогда ячейка A2
будет обновляться накопительным образом. Если вы введете число в ячейку, отличное от B2
или A2
, вы обнаружите, что ячейка A2
не обновляется (в отличие от метода итеративных вычислений). Мы используем Application.Sum
вместо +
оператора, чтобы избежать ошибки Type Mismatch
, если A2
или B2
содержат нечисловые данные.
Попробуй, посмотри, получится ли то, что тебе нужно.
Edit:
Если у вас есть несколько строк, вы можете попробовать что-то вроде ниже.
Private Sub Worksheet_Change(ByVal Target As Range)
' Assumes "daily sales" are entered into column B and that "running total" is in column A
If Target.Column = 2 Then
Me.Cells(Target.Row, "A").Value2 = Application.Sum(Me.Cells(Target.Row, "A"), Target)
End If
End Sub