Използване на циркулярни препратки към нашето предимство - Съвети за 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.

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

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