Кумулятивний осередок (кумулятивний)

зміст

Досить часто виникає ситуація, коли нам потрібно підсумувати (накопичувати) кілька значень, послідовно введених в одну комірку:

Ті. якщо, наприклад, ви введете число 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  

Адреси комірок А1 і А2, звичайно, можна замінити своїми.

Якщо потрібно відстежувати введення даних і підсумовувати не окремі комірки, а цілі діапазони, то макрос доведеться трохи змінити:

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, як ними користуватися?

залишити коментар