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