Кумулативна клетка (кумулативна)

Съдържание

Доста често възниква ситуация, когато трябва да обобщим (натрупаме) няколко стойности, последователно въведени в една клетка:

Тези. ако например въведете числото 1 в клетка A5, тогава числото 1 трябва да се появи в B15. Ако след това въведете числото 1 в A7, тогава 1 трябва да се появи в клетка B22 и т.н. Общо взето това, което счетоводителите (и не само те) наричат ​​кумулативен сбор.

Можете да реализирате такава клетка за съхранение-акумулатор с помощта на прост макрос. Щракнете с десния бутон върху раздела на листа, където се намират клетки A1 и B1, и изберете от контекстното меню Изходен текст (Програмен код). В прозореца на редактора на Visual Basic, който се отваря, копирайте и поставете простия макро код:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Address(False, False) = "A1" Then If IsNumeric(.Value) Then Application.EnableEvents = False Range("A2").Value = Range(" A2").Value + .Value Application.EnableEvents = True End If End If End With End Sub  

Адресите на клетки A1 и A2, разбира се, могат да бъдат заменени с ваши собствени.

Ако трябва да проследите въвеждането на данни и да обобщите не отделни клетки, а цели диапазони, тогава макросът ще трябва да бъде леко променен:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range("A1:A10")) Is Nothing Then If IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Offset(0, 1) .Value = Target.Offset(0, 1).Value + Target.Value Application.EnableEvents = True End If End If End Sub  

Предполага се, че данните се въвеждат в клетките от диапазона A1:A10, а въведените числа се сумират в съседната колона вдясно. Ако във вашия случай не е съседен, тогава увеличете изместването надясно в оператора Offset – заменете 1 с по-голямо число.

  • Какво представляват макросите, къде да вмъкнете макро код във VBA, как да ги използвате?

Оставете коментар