Innehållsförteckning:
Video: LETARAD med Excel 2024
Array formler är en av Excel mest kraftfulla funktioner. Om du är bekant med matrisformler kan du vara glad att veta att du kan skapa VBA-funktioner som returnerar en matris.
Återkommer en rad månadsnamn
Låt oss börja med ett enkelt exempel. Funktionen MonthNames returnerar en 12-elements array av - du gissade det - månadens namn.
Funktion Månadnamn () MonthNames = Array ("Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September" Oktober "," november "," december ") Avsluta funktionen
För att använda MonthNames-funktionen i ett arbetsblad måste du ange det som en 12-cells arrayformel. Välj till exempel område A2: L2 och skriv in = MonthNames () . Tryck sedan på Ctrl + Shift + Enter för att mata in matrisformeln i alla 12 valda celler. Kolla in resultatet.
Om du vill att månadsnamnen ska visas i en kolumn markerar du 12 celler i en kolumn och använder denna arrayformel. (Glöm inte att skriva in den genom att trycka på Ctrl + Shift + Enter.)
= TRANSPOSE (MonthNames ())
Du kan också välja en enda månad från matrisen. Här är en formel (inte en matrisformel) som visar det fjärde elementet i matrisen: april.
= INDEX (MonthNames (), 4)
Återgå en sorterad lista
Anta att du har en lista med namn som du vill visa i sorterad ordning i ett annat cellområde. Skulle det inte vara trevligt att ha ett kalkylblad fungerar det för dig?
Den här anpassade funktionen gör just det: Det tar en cell med ett kolumn som sitt argument och returnerar sedan en rad av de sorterade cellerna. Område A2: A13 innehåller några namn. Område C2: C13 innehåller denna multicell array-formel. (Kom ihåg att du måste ange formeln genom att trycka på Ctrl + Shift + Enter.)
= Sorterad (A2: A13)
Här är koden för Sorterad funktion:
Funktion Sorterad (Rng Som Räckvidd) Dim SortedData () Som Variant Dim Cell Som Range Dim Temp Som Variant, j Så länge Dim NonEmpty As Long 'Överför data till SortedData för varje cell i Rng Om inte IsEmpty (Cell) Då NonEmpty = NonEmpty + 1 ReDim Bevara SortedData (1 Till NonEmpty) SortedData (NonEmpty) = Cell. Värde Slut om nästa cell "Sortera arrayen För i = 1 Till NonEmpty För j = i + 1 Till NonEmpty Om SorteradData (i)> SorteradData (j) Då Temp = SorteradData (j) SorteradData (j) = SorteradData (i) SorteradData (i) = Temp slutet om nästa j Nästa jag "Överför arrayen och returnera den Sorterad = Application.Transpose (SortedData) Slutfunktion
Funktionen Sorterad startar genom att skapa en array med namnet SortedData. Denna array innehåller alla nonblank-värdena i argumentområdet. Därefter sorteras sorteringsdatabasen med en bubbelsortalgoritm. Eftersom matrisen är en horisontell matris måste den transponeras innan den returneras av funktionen.
Den sorterade funktionen fungerar med en rad av vilken storlek som helst, så länge den ligger i en enda kolumn eller rad. Om de osorterade uppgifterna är i rad måste din formel använda Excels TRANSPOSE-funktion för att visa de sorterade dataen horisontellt. Till exempel:
= TRANSPOSE (Sorterad (A16: L16))