Мишель спрашивает,
Я думаю, что я на правильном пути с круговой ссылкой. Вот моя проблема. У меня две клетки,
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, чтобы обработчик событий больше не вызывал себя.