Использование круговых ссылок для нашего преимущества - Советы по Excel

Мишель спрашивает,

Я думаю, что я на правильном пути с круговой ссылкой. Вот моя проблема. У меня две клетки, A1=5и B1=5. Я хочу, чтобы B1 запомнил 5, а затем я хочу добавить новое значение к A1, скажем, A1 теперь равно 10. Могу ли я иметь формулу B1, которая запоминает 5, но также добавляет 10? Итак, теперь B1=15?

Обычно циклические ссылки - это плохо, но иногда их можно использовать в наших интересах. Вот немакро-способ делать то, что вы хотите делать. Это будет работать только в определенных ситуациях.

  • В меню Excel выберите Инструменты> Параметры.
  • Перейдите на вкладку "Расчет". Установите флажок Итерации. Измените максимальное количество итераций на 1.
  • Щелкните ОК, чтобы закрыть диалоговое окно параметров.
  • Введите 5 в ячейку A1.
  • Введите 0 в ячейку B1
  • Введите =A1+B1в ячейку B1
  • Теперь, когда вы вводите новые значения в A1, запись в B1 запомнит старую сумму и добавит значение из A1.

Вот ОГРОМНОЕ ограничение. Вы не можете вводить какие-либо значения в другом месте листа! Каждый раз, когда вы вводите значение или пересчитываете лист, значение в A1 будет добавлено к значению в B1. Таким образом, нажав 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

Этот фрагмент кода запускается каждый раз, когда на листе изменяется ячейка. Target - это специальная объектная переменная, которая сообщает, какая ячейка была изменена. Обработчик событий проверяет, какая ячейка была только что изменена. Если ячейка была A1, она добавит значение из A1 к B1. Мы должны отключить обработчики событий при изменении B1, чтобы обработчик событий больше не вызывал себя.

Интересные статьи...