Innehållsförteckning
I den här handledningen lär du dig hur du skapar ett dynamiskt namngivet intervall i Excel och hur du använder det i formler för att automatiskt inkludera nya data i beräkningar.
I förra veckans handledning tittade vi på olika sätt att definiera ett statiskt namngivet intervall i Excel. Ett statiskt namn hänvisar alltid till samma celler, vilket innebär att du måste uppdatera intervallreferensen manuellt när du lägger till nya eller tar bort befintliga data.
Om du arbetar med data som förändras kontinuerligt kanske du vill göra ditt namngivna intervall dynamiskt, så att det automatiskt expanderar för att rymma nytillkomna poster eller krymper för att utesluta borttagna data. Längre fram i den här handledningen hittar du detaljerad vägledning steg för steg om hur du gör detta.
Så här skapar du ett dynamiskt namngivet intervall i Excel
Till att börja med kan vi bygga ett dynamiskt namngivet intervall som består av en enda kolumn och ett variabelt antal rader. För att göra detta utför du de här stegen:
- På den Formel på fliken Definierade namn grupp, klicka på Definiera namn Eller tryck på Ctrl + F3 för att öppna Excel Name Manger och klicka på den Ny... knapp.
- I vilket fall som helst är Nytt namn Dialogrutan öppnas där du kan ange följande uppgifter:
- I Namn och skriv namnet på det dynamiska intervallet.
- I Tillämpningsområde i rullgardinsmenyn, ange namnets räckvidd. Arbetsbok (standard) rekommenderas i de flesta fall.
- I Hänvisar till ange antingen formeln OFFSET COUNTA eller INDEX COUNTA.
- Klicka på OK. Klart!
I följande skärmdump definierar vi ett dynamiskt område som heter objekt som rymmer alla celler med uppgifter i kolumn A, med undantag för rubrikraden:
OFFSET-formeln för att definiera ett dynamiskt namngivet område i Excel
Den generiska formeln för att skapa ett dynamiskt namngivet intervall i Excel är följande:
OFFSET( första_cell , 0, 0, COUNTA( kolumn ), 1)Var:
- första_cell - den första posten som ska ingå i det namngivna intervallet, till exempel $A$2.
- kolumn - en absolut referens till kolumnen, till exempel $A:$A.
Kärnan i formeln är att du använder funktionen COUNTA för att få fram antalet celler som inte är tomma i den aktuella kolumnen. Detta antal går direkt till höjd argumentet i funktionen OFFSET(reference, rows, cols, [height], [width]) som anger hur många rader som ska returneras.
Utöver det är det en vanlig Offset-formel, där:
- referens är den utgångspunkt från vilken du baserar förskjutningen (first_cell).
- rader och kols är båda 0, eftersom det inte finns några kolumner eller rader att förskjuta.
- bredd är lika med 1 kolumn.
Om du till exempel vill skapa ett dynamiskt namngivet intervall för kolumn A i ark 3, med början i cell A2, använder vi den här formeln:
=OFFSET(Sheet3!$A$2, 0, 0, COUNTA(Sheet3!$A:$A), 1)
Observera: Om du definierar ett dynamiskt intervall i det aktuella arbetsbladet behöver du inte ange arknamnet i referenserna, Excel gör det automatiskt. Om du skapar ett intervall för ett annat ark, föregår du cell- eller intervallreferensen med arkets namn följt av ett utropstecken (som i formelexemplet ovan).
INDEX-formeln för att skapa ett dynamiskt namngivet intervall i Excel
Ett annat sätt att skapa ett dynamiskt Excel-intervall är att använda COUNTA i kombination med INDEX-funktionen.
första_cell :INDEX( kolumn ,COUNTA( kolumn ))Denna formel består av två delar:
- På vänster sida av intervalloperatorn (:) lägger du in den hårt kodade startreferensen, t.ex. $A$2.
- På den högra sidan använder du funktionen INDEX(array, row_num, [column_num]) för att ta reda på den avslutande referensen. Här anger du hela kolumn A för arrayen och använder COUNTA för att få fram radnumret (dvs. antalet celler som inte är inmatningsceller i kolumn A).
För vårt exempel på dataset (se skärmbilden ovan) ser formeln ut på följande sätt:
=$A$2:INDEX($A:$A, COUNTA($A:$A))
Eftersom det finns 5 icke-tomma celler i kolumn A, inklusive en kolumnrubrik, ger COUNTA 5. Följaktligen ger INDEX $A$5, vilket är den senast använda cellen i kolumn A (vanligtvis ger en indexformel ett värde, men referensoperatorn tvingar den att ge en referens). Och eftersom vi har satt $A$2 som utgångspunkt är slutresultatet av formeln intervallet $A$2:$A$5.
För att testa det nyligen skapade dynamiska intervallet kan du låta COUNTA hämta antalet artiklar:
=COUNTA(Artiklar)
Om allt görs på rätt sätt kommer resultatet av formeln att ändras när du lägger till eller tar bort objekt till/från listan:
Observera: De två formlerna som diskuteras ovan ger samma resultat, men det finns en skillnad i prestanda som du bör vara medveten om. OFFSET är en flyktig funktion som räknas om vid varje ändring i ett ark. På kraftfulla moderna maskiner och rimligt stora datamängder bör detta inte vara något problem. På maskiner med låg kapacitet och stora datamängder kan detta sakta ner Excel. I det fallet bör dubättre använda formeln INDEX för att skapa ett dynamiskt namngivet intervall.
Hur man skapar ett tvådimensionellt dynamiskt område i Excel
Om du vill skapa ett tvådimensionellt namngivet intervall, där inte bara antalet rader utan även antalet kolumner är dynamiskt, använder du följande ändring av INDEX COUNTA-formeln:
första_cell :INDEX($1:$1048576, COUNTA( första kolumnen ), COUNTA( första raden )))I den här formeln har du två COUNTA-funktioner för att få fram den sista icke-tomma raden och den sista icke-tomma kolumnen ( row_num och kolumn_nummer argumenten i INDEX-funktionen). I den matris argumentet matar du hela arbetsbladet (1048576 rader i Excel 2016-2007, 65535 rader i Excel 2003 och lägre).
Nu definierar vi ytterligare ett dynamiskt intervall för vår datamängd: intervallet som heter Försäljning som innehåller försäljningssiffror för tre månader (januari till mars) och som justeras automatiskt när du lägger till nya artiklar (rader) eller månader (kolumner) i tabellen.
Med försäljningsuppgifter som börjar i kolumn B, rad 2, får formeln följande form:
=$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2)))
Om du vill vara säker på att ditt dynamiska intervall fungerar som det ska, ska du ange följande formler någonstans på arket:
=SUMMA(försäljning)
=SUMMA(B2:D5)
Som du kan se i skärmbilden nedan ger båda formlerna samma totalsumma. Skillnaden visar sig när du lägger till nya poster i tabellen: den första formeln (med det dynamiska namnintervallet) uppdateras automatiskt, medan den andra måste uppdateras manuellt vid varje ändring. Det är en stor skillnad, eller hur?
Hur du använder dynamiska namngivna områden i Excel-formler
I de tidigare avsnitten i den här handledningen har du redan sett ett par enkla formler som använder dynamiska intervall. Nu ska vi försöka hitta på något mer meningsfullt som visar det verkliga värdet av ett dynamiskt namngivet Excel-intervall.
I det här exemplet använder vi den klassiska INDEX MATCH-formeln som används för Vlookup i Excel:
INDEX ( return_range , MATCH ( Lookup_value , lookup_range , 0))...och se hur vi kan göra formeln ännu mer kraftfull genom att använda dynamiska namnintervall.
Som visas i skärmdumpen ovan försöker vi bygga en instrumentpanel där användaren anger ett artikelnamn i H1 och får den totala försäljningen för artikeln i H2. Vår exempeltabell som skapats för demonstration innehåller endast 4 artiklar, men i dina verkliga ark kan det finnas hundratals och till och med tusentals rader. Dessutom kan nya artiklar läggas till dagligen, så att använda referenser är inte ett problem.eftersom du då måste uppdatera formeln om och om igen. Jag är för lat för det! :)
För att tvinga formeln att expandera automatiskt ska vi definiera tre namn: två dynamiska intervall och en statisk cell med namn:
Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))
Return_range: =$E$2:INDEX($E:$E, COUNTA($E:$E))
Uppslagsvärde: =$H$1
Excel lägger till namnet på det aktuella arket till alla referenser, så innan du skapar namnen bör du öppna arket med dina källdata.
Börja nu skriva formeln i H1. När det gäller det första argumentet skriver du några tecken på det namn du vill använda, och Excel visar alla tillgängliga namn som passar ihop. Dubbelklicka på det lämpliga namnet, och Excel infogar det i formeln direkt:
Den färdiga formeln ser ut på följande sätt:
=INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))
Och det fungerar perfekt!
Så snart du lägger till nya poster i tabellen kommer de att inkluderas i dina beräkningar på en gång, utan att du behöver göra en enda ändring i formeln! Och om du någonsin behöver överföra formeln till en annan Excel-fil, skapar du helt enkelt samma namn i målarbetsboken, kopierar/klistrar in formeln och får den att fungera omedelbart.
Tips: Förutom att göra formlerna mer hållbara är dynamiska intervall praktiska för att skapa dynamiska rullgardinslistor.
Så här skapar och använder du dynamiska namngivna intervall i Excel. Om du vill titta närmare på de formler som diskuteras i den här handledningen är du välkommen att ladda ner vår arbetsbok för dynamiska namngivna intervall i Excel. Tack för att du läste och hoppas att vi ses på vår blogg nästa vecka!