Spør Michelle,
Jeg tror jeg er på rett vei med en sirkulær referanse. Her er problemet mitt. Jeg har to celler,
A1=5
ogB1=5
. Det jeg vil gjøre er å ha B1 utenat 5, og så vil jeg legge til en ny verdi til A1, si A1 nå lik 10. Kan jeg ha en B1-formel som husker 5, men også legger til 10? Så nåB1=15
?
Vanligvis er sirkulære referanser en dårlig ting, men noen ganger kan de brukes til vår fordel. Her er den ikke-makro måten å gjøre det du vil gjøre. Det vil bare fungere i visse situasjoner.
- Velg Verktøy> Alternativer på Excel-menyen.
- Gå til fanen Beregning. Merk av i boksen for iterasjoner. Endre maksimale iterasjoner til 1.
- Klikk OK for å lukke alternativdialogboksen.
- Skriv inn 5 i celle A1.
- Skriv inn 0 i celle B1
- Skriv inn
=A1+B1
i celle B1 - Når du skriver inn nye verdier i A1, vil oppføringen i B1 huske den gamle summen og legge til verdien fra A1.
Her er den ENORME begrensningen. Du kan ikke angi noen verdier andre steder på arket! Hver gang du skriver inn en verdi eller arket beregnes på nytt, blir verdien i A1 lagt til verdien i B1. Dermed, ved å trykke F9 en rekke ganger, vil du se B1 øke med 5 for hver F9.
Den sikreste måten å gjøre dette på er med en liten makro for hendelsesbehandler. Du må legge til denne koden i kodepanelet for Sheet1 (forutsatt at du jobber med Sheet1). Hendelseshåndteringskoden vil være som følger:
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
Denne koden kjøres når som helst når en celle endres på arket. Target er en spesiell objektvariabel som forteller hvilken celle som ble endret. Hendelsesbehandleren sjekker for å se hvilken celle som nettopp ble endret. Hvis cellen var A1, vil den legge til verdien i A1 til B1. Vi må slå av hendelsesbehandlere mens vi bytter B1 slik at hendelsesbehandleren ikke kaller seg selv igjen.