Використання циркулярних посилань на наші переваги - Поради Excel

- запитує Мішель,

Я думаю, що я на правильному шляху з круговим посиланням. Ось моя проблема. У мене є дві клітини, A1=5і B1=5. Що я хочу зробити, це B1 запам'ятати 5, а потім я хочу додати нове значення до A1, скажімо, A1 тепер дорівнює 10. Чи можу я отримати формулу B1, яка запам'ятовує 5, але також додає 10? Так що зараз B1=15?

Зазвичай циркулярні посилання - це погана річ, але іноді їх можна використовувати на нашу користь. Ось не макро-спосіб зробити те, що ви хочете зробити. Це спрацює лише в певних ситуаціях.

  • У меню Excel виберіть Інструменти> Параметри.
  • Перейдіть на вкладку Розрахунок. Установіть прапорець для повторень. Змініть максимальну кількість ітерацій на 1.
  • Натисніть OK, щоб закрити діалогове вікно параметрів.
  • Введіть 5 у клітинку A1.
  • Введіть 0 у комірку B1
  • Введіть =A1+B1у комірку B1
  • Тепер, коли ви вводите нові значення в A1, запис у B1 запам'ятовує старий підсумок і додає значення з A1.

Ось ВЕЛИЧЕЗНЕ обмеження. Ви не можете вводити будь-які значення в іншому місці на аркуші! Кожного разу, коли ви вводите значення або аркуш перераховується, значення в А1 додається до значення в В1. Таким чином, натиснувши F9 купу разів, ви будете спостерігати, як B1 збільшується на 5 для кожного F9.

Більш безпечний спосіб зробити це за допомогою невеликого макросу обробника подій. Вам потрібно буде додати цей код на область коду для Sheet1 (припускаючи, що ви працюєте над Sheet1). Код обробника подій буде таким:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = “$A$1” Then Application.EnableEvents = False Range(“B1”).Value = Range(“B1”).Value + Target.Value Application.EnableEvents = True End If End Sub

Цей біт коду запускається щоразу, коли клітинку змінюється на аркуші. Ціль - це спеціальна змінна об'єкта, яка повідомляє, яку клітинку було змінено. Обробник подій перевіряє, яка комірка щойно була змінена. Якщо комірка була A1, тоді вона додасть значення в A1 до B1. Нам потрібно вимкнути обробники подій під час зміни B1, щоб обробник подій не викликав себе знову.

Цікаві статті...