
à terlÀmna toppen eller botten n Det Àr inte svÄrt att registrera en datamÀngd i Excel, och det finns mÄnga sÀtt att göra det. Du kan filtrera, anvÀnda uttryck eller till och med en pivottabell; din rutt kan bero pÄ hur du anvÀnder resultaten. Men nu, tack vare de nya dynamiska array-funktionerna, kan du anvÀnda ett uttryck för att returnera sÄ mÄnga kolumner och rader av kÀlldata som du vill. I den hÀr artikeln ska jag prata lite om dessa funktioner. Sedan kommer vi att anvÀnda dem för att returnera toppen och botten n uppgifter.
SER: 83 Excel-tips som alla anvÀndare bör behÀrska (TechRepublic)
MÄste lÀsa Windows-tÀckning
Jag anvÀnder Microsoft 365 (skrivbord) pÄ ett Windows 10 64-bitarssystem. BÄda dynamiska array-funktionerna i denna lösning Àr tillgÀngliga i Microsoft 365 och Excel 2021, Excel för webben, Excel för iPad och iPhone, Excel för Android-surfplattor och telefoner. För din bekvÀmlighet kan du ladda ner demonstrationsfilen .xlsx. Den hÀr artikeln förutsÀtter att du har grundlÀggande Excel-kunskaper, men Àven en nybörjare bör kunna följa instruktionerna för att lyckas.
Komma ikapp
Tidigare ÄtervÀnde toppen eller botten n krÀvde lite arbete och viss specialkunskap. Du kan anvÀnda ett avancerat filter, ett uttryck eller till och med en pivottabell. Det fina med de nya dynamiska array-funktionerna Àr att du inte Àndrar kÀlldata; dessa funktioner skapar en ny datamÀngd.
Om du inte Àr bekant med de Àldre sÀtten att returnera toppen eller botten n kan du lÀsa nÄgra av följande artiklar om detta Àmne:
De Àr inte nödvÀndigtvis förÄldrade, sÀrskilt om du vill arbeta med kÀlldata pÄ plats. Om du vill arbeta med en ny datamÀngd Àr de nya funktionerna lösningen.
Bild A visar en enkel datamÀngd som en tabell. Vi vill returnera toppen och botten n vÀrden i kolumnen VÀrde. En kombination av funktionerna som granskas i nÀsta avsnitt kommer tillbaka n uppgifter. Arkets namn Àr Data; du kommer att behöva det om ett tag.
Bild A
Om funktionerna i Excel
Vi kommer att anvÀnda tre funktioner: SORT(), SEQUENCE() och INDEX(). De tvÄ första Àr dynamiska array-funktioner och ganska nya för Microsoft 365. INDEX() har funnits lÀnge, och du kanske redan Àr bekant med det. Men först, vad Àr en dynamisk array-funktion?
Om du nÄgonsin har skrivit in ett uttryck med Ctrl + Shift + Enter, Àr du redan bekant med hur Excel brukade arbeta med dynamiska arrayer. Tack vare den nya dynamiska array-funktionen kan dessa typer av uttryck vara mycket enklare att skapa och underhÄlla. Resultaten spill i cellerna nedan och fyll i sÄ mÄnga som behövs för att slutföra uttryckets berÀkningar. Det kallas det spillomrÄde. Om du ser ett spillfel Àr intervallet som behövs för att uppfylla funktionen inte tillgÀngligt.
Nu till funktionerna.
SORT() returnerar en sorterad array med följande syntax:
SORT(array,[sort_index],[sort_order],[by_col])
dÀr array Àr det enda nödvÀndiga argumentet och identifierar intervallet som ska sorteras. De valfria argumenten följer:
- sort_index: Ett numeriskt offsetvÀrde som identifierar raden eller kolumnen att sortera efter
- sort_order: Siffran 1 för stigande sortering eller -1 för fallande, dÀr 1 Àr standard
- by_col: De logiska vÀrdena TRUE för en radsortering och FALSE för en kolumnsortering, med TRUE som standard
För att returnera toppen eller botten n poster mÄste datamÀngden sorteras och vi anvÀnder SORT()-funktionen istÀllet för en manuell rutt.
SEQUENCE() returnerar en serie vÀrden med följande syntax:
=SEKVENS(rader,[columns],[start],[step])
dÀr rader krÀvs och anger antalet rader som ska fyllas. De valfria argumenten följer:
- kolumn: antalet kolumner som ska returneras
- start: den första siffran i sekvensen
- steg: det belopp som ska ökas med
I sin enklaste form kan du anvÀnda den hÀr funktionen för att returnera en serie fasta vÀrden, men den lyser verkligen nÀr du vill returnera alla kolumner i kÀlldatauppsÀttningen. Genom att kombinera de tvÄ kan du returnera en fullstÀndigt sorterad datamÀngd.
Den sista funktionen, INDEX(), returnerar ett vÀrde eller referensen till ett vÀrde frÄn en tabell eller ett omrÄde med hjÀlp av syntaxen:
INDEX(matris, rad_nummer, [column_num])
dÀr array krÀvs och refererar till ett intervall eller en arraykonstant. Om matrisen bara innehÄller en rad eller kolumn, Àr motsvarande argument rad_num eller kolumn_num valfritt. Om matrisen har mer Àn en rad och mer Àn en kolumn, och endast radnummer eller kolumnnummer anvÀnds, returnerar INDEX() en matris med hela raden eller kolumnen i matrisen. De tvÄ sista argumenten kan behövas eller inte:
- row_num krÀvs om inte kolumn_num finns. Den vÀljer raden i arrayen frÄn vilken ett vÀrde ska returneras. Om rad_nummer utelÀmnas krÀvs kolumnnummer.
- kolumn_num Àr valfritt och vÀljer kolumnen i matrisen frÄn vilken ett vÀrde ska returneras. Om kolumn_num utelÀmnas krÀvs radnummer.
LÄt oss nu börja anvÀnda dessa funktioner, börja med SORT()
Hur man anvÀnder SORT() i Excel
För att returnera toppen eller botten n vÀrden för valfri datamÀngd behöver du en sorterad datamÀngd. Tack vare SORT() Àr en manuell sortering inte nödvÀndig. För att se hur SORT() fungerar, lÄt oss anvÀnda den för att returnera en sorterad datamÀngd av exempeldatauppsÀttningen (Bild A). Först mÄste du kopiera kolumnrubrikerna till en annan del av arket, eller till och med ett annat ark. Jag kommer att anvÀnda ett annat ark, sÄ att du kan se hur lÀtt detta uppnÄs. Kopiera rubrikcellerna B2:F2 till ett andra ark. Skriv sedan in i B3 (pÄ det andra bladet) följande funktion:
=SORT(Data!B3:F13,2)
Bild B visar kÀlldata sorterade efter fÀltet VÀrde. SÄ hÀr fungerar argumenten i SORT()-funktionen:
- Data! Àr arknamnet dÀr kÀlldata finns.
- B3:F13 Àr den ursprungliga datamÀngden.
- 2 Ă€r indexvĂ€rdet, som anger kolumnen VĂ€rde â den andra kolumnen i B3:F13. Genom att Ă€ndra indexvĂ€rdet frĂ„n 2 till 1, 3, 4 eller 5 kan du visa en eller alla kolumner.
Bild B
Var inte det lÀtt?
Om du vÀljer dessa referenser kommer Excel att visa strukturreferenser eftersom kÀlldata Àr en tabell. Du vill formatera resultaten eftersom SORT()-funktionen inte gör det. Det Àr lite av en olÀgenhet nÀr man försöker anvÀnda detta i en instrumentpanel. Du vill lÀgga till en VBA-procedur som tillÀmpar formateringen. Det hÀr Àr den brist jag har stött pÄ.
Det Àr en enkel sorts, men för att uppnÄ en topp- eller bottendatauppsÀttning mÄste du lÀgga till SEQUENCE() och INDEX().
Lösningen
Funktionen SORT() kan enkelt returnera hela datamÀngden i stigande eller fallande ordning. Vi vill ocksÄ begrÀnsa antalet poster som returneras, sÄ vi lÀgger till SEQUENCE() och INDEX() i formulÀret
=INDEX(SORT(array,sort_index,sort_order),SEQUENCE(inga_poster),SEQUENCE(första_kolumn,sista_kolumn))
Argumenten för den första SEQUENCE()-funktionen kommer att vara indatavÀrden, sÄ att anvÀndaren kan Àndra antalet poster som returneras. Det betyder att vi behöver indataceller. AnvÀnda sig av Bild C som en guide för att stÀlla in topp- och bottenintervall och indatacellintervall. Eftersom jag infogade rader överst för att rymma indatacellerna, kommer intervallreferenserna du har sett att vara annorlunda, sÄ lÄt det inte förvirra dig.
Bild C
LÄt oss börja med den översta datamÀngden, som krÀver en fallande sortering, uttryckt med -1 i SORT()-funktionens sort_order-argument. I H6 anger du funktionen
=INDEX(SORT(B6:F16;2;-1);SEKVENS(I2);SEKVENS(1;5))
Det kommer att returnera ett berĂ€kningsfel eftersom det inte finns nĂ„got vĂ€rde i I2âindatacellen. Ange 3 i I2 för att returnera datamĂ€ngden som visas i Bild D. Du vet redan hur SORT()-funktionen fungerar; i det hĂ€r fallet fungerar den som funktionen INDEX() arrayargument. SEKVENS(I2) Ă€r argumentet radnummer och returnerar 3 eftersom ingĂ„ngsvĂ€rdet i I2 Ă€r 3. Följaktligen returnerar den en fallande datamĂ€ngd med tre rader. SEKVENS(1,5) anger kolumnerna 1 till 5 i kĂ€lldatauppsĂ€ttningen. Allt tillsammans SORT() returnerar en fullstĂ€ndigt sorterad datamĂ€ngd, men de tvĂ„ SEQUENCE()-funktionerna begrĂ€nsar den till tre rader och inkluderar alla fem kolumner.
Bild D
Bottenfunktionen fungerar pÄ liknande sÀtt, men den utelÀmnar sort_order-argumentet eftersom stigande (1) Àr standard. Dessutom refererar den till I3 som ingÄngscellen. Du kan bara anvÀnda en indatacell och lÄta dem bÄda referera till den, men pÄ detta sÀtt kan bÄda datamÀngderna vara olika antal rader.
I N6 anger du funktionen
=INDEX(SORT(B6:F16;2);SEKVENS(I3);SEKVENS(1;5))
Muttrarna och bultarna Ă€r i stort sett desamma. Standardargumentet sort_order, som inte anges, returnerar en stigande ordning, sĂ„ att du fĂ„r de lĂ€gsta vĂ€rdena överst i sorteringen. Genom att referera till I3 bestĂ€mmer du hur mĂ„nga rader som ska returneras. Bild E visar inmatningsvĂ€rdet 4. Följaktligen returnerar combo-funktionen alla fem kolumnerna för de första fyra raderna â de fyra nedersta vĂ€rdena i Value.
Bild E
Till en början verkar allt lite mer komplext Àn du kanske gillar, men nÀr du vÀl har blivit bekant med de nya dynamiska array-funktionerna, desto enklare blir dina lösningar för dig.
VÀrt att nÀmna
Jag nĂ€mnde tidigare att dessa funktioner kan returnera ett fel om spillomrĂ„det inte Ă€r tillgĂ€ngligt. Om detta hĂ€nder, vĂ€lj hela spillomrĂ„det och ta bort allt â data, format, allt och se om det inte hjĂ€lper. Av sĂ€rskild notering Ă€r sammanslagna celler. Av nĂ„gon anledning rensar man inte bort dem helt. Du kan behöva flytta hela verken till ett nytt ark.
HÄll ögonen öppna
Den enda begrÀnsningen jag har mÀrkt Àr funktionernas misslyckande att behÄlla formateringen. I en framtida artikel kommer jag att dela en VBA-procedur som tillÀmpar lÀmplig formatering för dig nÀr du Àndrar en indatacell.