Frågar Michelle,
Jag tror att jag är på rätt väg med en cirkulär referens. Här är mitt problem. Jag har två celler
A1=5
ochB1=5
. Vad jag vill göra är att B1 ska memorera 5, och sedan vill jag lägga till ett nytt värde till A1, säg A1 är nu lika med 10. Kan jag ha en B1-formel som memorerar 5 men också lägger till 10? Så nuB1=15
?
Vanligtvis är cirkulära referenser en dålig sak, men ibland kan de användas till vår fördel. Här är det icke-makro sättet att göra vad du vill göra. Det fungerar bara i vissa situationer.
- Välj Verktyg> Alternativ på Excel-menyn.
- Gå till fliken Beräkning. Markera rutan för iterationer. Ändra maximala iterationer till 1.
- Klicka på OK för att stänga alternativdialogrutan.
- Ange 5 i cell A1.
- Ange 0 i cell B1
- Ange
=A1+B1
i cell B1 - Nu när du anger nya värden i A1 kommer posten i B1 att komma ihåg den gamla summan och lägga till värdet från A1.
Här är den ENORMA begränsningen. Du kan inte ange några värden någon annanstans på arket! Varje gång du anger ett värde eller arket beräknas om läggs värdet i A1 till värdet i B1. Således, genom att slå F9 en massa gånger, kommer du att se B1 öka med 5 för varje F9.
Det säkrare sättet att göra detta är med ett litet makro för händelsehanterare. Du måste lägga till den här koden i kodrutan för Sheet1 (förutsatt att du arbetar med Sheet1). Händelsehanterarkoden skulle vara som följer:
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
Denna kod kod körs när som helst en cell ändras på arket. Target är en speciell objektvariabel som berättar vilken cell som har ändrats. Händelsehanteraren kontrollerar för att se vilken cell som just har ändrats. Om cellen var A1, kommer den att lägga till värdet i A1 till B1. Vi måste stänga av händelseshanterare medan vi byter B1 så att händelsehanteraren inte anropar sig själv igen.