Осередок з накопиченням (наростаючим підсумком)

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

Тобто якщо, наприклад, ввести в клітинку А1 число 5, то в B1 має з'явитися число 15. Якщо потім ввести в А1 число 7, то в осередку B1 має з'явиться 22 і т.д. Вобщем то, що бухгалтери (і не тільки вони) називають накопичувальний підсумок.

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

Передбачається, що введення даних проводиться в осередку діапазону A1: A10, а сумуються введені числа в сусідній стовпець праворуч. Якщо у вашому випадку він не сусідній, то збільште зрушення вправо в операторі Offset - замініть 1 на число побільше.

Посилання по темі

Все чудово, тільки у мене маленька прохання, модернізації цього Маркоса.
Осередків для введення даних кілька, в стовпчик, а осередок для накопичення даних одна. Як так зробити ?.


де B1 - ваша одна осередок накопичення

Спасибо большое за даний прийом. Дуже потрібен був.

Микола, спасибі велике, відмінна річ. Ваш сайт - просто якийсь коштовний скарб для "звихнутих" на Excel!

Чи не підкажете, що я роблю не так? Потрібно зробити накопичувальними два стовпці поспіль, в які потрапляють дані також з двох стовпців, розташованих поруч. Накопичувальні зрушені на 3 стовпці вправо. Перший макрос спрацьовує, а другий не хоче - ні в одному вікні макросу, ні в різних.

Лілія, процедура Worksheet_Change буває тільки одна, а у вас дві (та ще й з однаковим ім'ям) - тому друга не виконується. Потрібно об'єднати код цих двох макросів в один. Та й не потрібна тут друга половина - досить збільшити чутливий інтервал:

Микола, спасибі за чудовий макрос! Але ось одна проблемка: з певною періодичністю дані в стовпці введення # 91; Target, Range ( "O7. O5000") # 93; змінюються за допомогою формули (яка тягне нові дані для кожного рядка за умовами з іншого файлу). Формула ця зберігатися як формула тільки в одній комірці вище шапки, а в інших після поновлення даних зберігається як значення (для економії ресурсів). АЛЕ при вставлених формули в поля введення, в полях накопичення нічого не відбувається (вставляються формули діапазоном), і при Ctrl + C - Ctrl + V (as value) теж нічого.
Однак, якщо взяти поштучно, тобто скопіювати формулу і вставити в ОДНЕ поле введення даних (для їх відпо-го поновлення), то поле накопичення коректно змінюється. Але рядків щось більш 500 - в кожну руками всталять довго.
А також, якщо після вставки формули в поле введення даних натиснути F2 і Введення, то поле накопичення також коректно змінюється.
ПИТАННЯ: що необхідно зробити, щоб поле накопичення змінювалося і після вставки в поле введення формули (без провалювання в кожну по F2). - дуууже треба, допоможіть будь ласка.
Вихідний код такий:
Private Sub Worksheet_Change (ByVal Target As Excel.Range)

If Not Intersect (Target, Range ( "o7: o5000";)) Is Nothing Then

If IsNumeric (Target.Value) Then

Target.Offset (0, 1) .Value = Target.Offset (0, 1) .Value + Target
Application.EnableEvents = True

здрастуйте Микола
макрос працює чудово, спасибі за Ваші підказки.
допоможіть будь ласка коли вводжу дані на А1, на А2 накопичується, чудово. як можна зробити так, коли вводиш наприклад дані на B1, з сум накопичених на А2 мінусувати. Вводячи дані на А1 і на В1 по черговості хотілося б побачити результат на А2. Осередок А2 знаходиться на іншому аркуші.

Привіт Микола!
Підкажіть будь ласка як запрограмувати макрос так що б дані забивалися в одній робочій книзі excel а підсумовувалися в інший? Я тільки вчуся працювати з макросами і поки не дуже добре розбираюся. Допоможіть, буду вам дуже вдячний!