Kolom / rij omzetten naar matrix in Excel: WRAPCOLS & WRAPROWS functies

  • Deel Dit
Michael Brown

De snelste manier om een kolom of rij waarden om te zetten in een tweedimensionale matrix is met behulp van de functie WRAPCOLS of WRAPROWS.

Sinds de begindagen van Excel is het erg goed geweest in het berekenen en analyseren van getallen. Maar het manipuleren van matrices was van oudsher een uitdaging. De introductie van dynamische matrices maakte het gebruik van matrixformules een stuk eenvoudiger. En nu brengt Microsoft een reeks nieuwe dynamische matrixfuncties uit om matrices te manipuleren en opnieuw vorm te geven. Deze tutorial leert u hoe u twee van dergelijke functies kunt gebruiken,WRAPCOLS en WRAPROWS, om een kolom of rij in een handomdraai om te zetten in een 2D matrix.

    Excel WRAPCOLS functie

    De functie WRAPCOLS in Excel transformeert een rij of kolom met waarden in een tweedimensionale matrix op basis van het opgegeven aantal waarden per rij.

    De syntaxis heeft de volgende argumenten:

    WRAPCOLS(vector, wrap_count, [pad_with])

    Waar:

    • vector (vereist) - de eendimensionale bronmatrix of -reeks.
    • wrap_count (vereist) - het maximum aantal waarden per kolom.
    • pad_met (facultatief) - de waarde die in de laatste kolom moet worden opgevuld indien er onvoldoende items zijn om deze kolom te vullen. Indien weggelaten, worden de ontbrekende waarden opgevuld met #N/A (standaard).

    Om bijvoorbeeld het bereik B5:B24 te veranderen in een tweedimensionale matrix met 5 waarden per kolom, is de formule:

    =WRAPROWS(B5:B24, 5)

    U voert de formule in een enkele cel in en deze loopt automatisch door in zoveel cellen als nodig is. In de WRAPCOLS-uitvoer worden de waarden verticaal gerangschikt, van boven naar beneden, op basis van de wrap_count waarde. Als het aantal is bereikt, wordt een nieuwe kolom gestart.

    Excel WRAAK functie

    De functie WRAPROWS in Excel zet een rij of kolom met waarden om in een tweedimensionale matrix op basis van het aantal waarden per rij dat u opgeeft.

    De syntaxis is als volgt:

    WRAPROWS(vector, wrap_count, [pad_with])

    Waar:

    • vector (vereist) - de eendimensionale bronmatrix of -reeks.
    • wrap_count (vereist) - het maximum aantal waarden per rij.
    • pad_met (optioneel) - de waarde om de laatste rij op te vullen indien er onvoldoende items zijn om deze te vullen. De standaardwaarde is #N/A.

    Om bijvoorbeeld het bereik B5:B24 om te zetten in een 2D-matrix met 5 waarden in elke rij, is de formule:

    =WRAPROWS(B5:B24, 5)

    U voert de formule in de cel linksboven van het morsbereik in, en alle andere cellen worden automatisch gevuld. De functie WRAPROWS rangschikt de waarden horizontaal, van links naar rechts, op basis van het wrap_count waarde. Na het bereiken van de telling, begint een nieuwe rij.

    Beschikbaarheid van WRAPCOLS en WRAPROWS

    Beide functies zijn alleen beschikbaar in Excel voor Microsoft 365 (Windows en Mac) en Excel voor het web.

    In eerdere versies kunt u traditionele complexere formules gebruiken om kolom-naar-rij en rij-naar-rij transformaties uit te voeren. Verderop in deze tutorial zullen we de alternatieve oplossingen in detail bespreken.

    Tip: Gebruik de functie TOCOL of TOROW om een omgekeerde bewerking uit te voeren, d.w.z. om een 2D-array te veranderen in een enkele kolom of rij.

    Hoe kolom / rij converteren naar bereik in Excel - voorbeelden

    Nu u het basisgebruik onder de knie hebt, gaan we een paar meer specifieke gevallen nader bekijken.

    Stel het maximum aantal waarden per kolom of rij in

    Afhankelijk van de structuur van uw oorspronkelijke gegevens, kan het geschikt zijn om deze te herschikken in kolommen (WRAPCOLS) of rijen (WRAPROWS). Welke functie u ook gebruikt, het is de wrap_count argument dat het maximum aantal waarden in elke kolom/rij bepaalt.

    Om bijvoorbeeld het bereik B4:B23 om te zetten in een 2D-array, zodat elke kolom maximaal 10 waarden heeft, gebruikt u deze formule:

    =WRAPCOLS(B4:B23, 10)

    Om hetzelfde bereik per rij te herschikken, zodat elke rij maximaal 4 waarden heeft, is de formule:

    =WRAPROWS(B4:B23, 4)

    De afbeelding hieronder laat zien hoe dit eruit ziet:

    Vul ontbrekende waarden op in de resulterende matrix

    Indien er onvoldoende waarden zijn om alle kolommen/rijen van het resulterende bereik te vullen, zullen WRAPROWS en WRAPCOLS #N/A fouten teruggeven om de structuur van de 2D-rij te behouden.

    Om het standaardgedrag te veranderen, kunt u een aangepaste waarde opgeven voor het optionele pad_met argument.

    Om bijvoorbeeld het bereik B4:B21 om te zetten in een 2D-array van maximaal 5 waarden breed, en de laatste rij op te vullen met streepjes als er niet genoeg gegevens zijn om deze te vullen, gebruikt u deze formule:

    =WRAPROWS(B4:B21, 5, "-")

    Om de ontbrekende waarden te vervangen door strings van nul lengte (spaties) is de formule:

    =WRAPROWS(B4:B21, 5, "")

    Vergelijk de resultaten met het standaardgedrag (formule in D5) waarbij pad_met is weggelaten:

    Meerdere rijen samenvoegen tot 2D-bereik

    Om enkele afzonderlijke rijen te combineren tot één 2D-array, stapelt u eerst de rijen horizontaal met de functie HSTACK, en wikkelt u vervolgens de waarden in met WRAPROWS of WRAPCOLS.

    Om bijvoorbeeld de waarden van 3 rijen (B5:J5, B7:G7 en B9:F9) samen te voegen en in te pakken in kolommen die elk 10 waarden bevatten, is de formule:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Om waarden uit meerdere rijen te combineren tot een 2D-bereik waarin elke rij 5 waarden bevat, neemt de formule deze vorm aan:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Combineer meerdere kolommen in een 2D matrix

    Om verschillende kolommen samen te voegen tot een 2D-bereik, stapelt u ze eerst verticaal op met de functie VSTACK, en wikkelt u de waarden vervolgens in rijen (WRAPROWS) of kolommen (WRAPCOLS).

    Om bijvoorbeeld de waarden uit 3 kolommen (B5:J5, B7:G7 en B9:F9) te combineren tot een 2D-bereik waarin elke kolom 10 waarden bevat, is de formule:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Om dezelfde kolommen te combineren tot een 2D-bereik waarin elke rij 5 waarden bevat, gebruikt u deze formule:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    De array inpakken en sorteren

    In situaties waarin het bronbereik waarden in willekeurige volgorde heeft terwijl u de uitvoer gesorteerd wilt hebben, gaat u op deze manier te werk:

    1. Sorteer de oorspronkelijke array op de gewenste manier met de functie SORT.
    2. Geef de gesorteerde matrix aan WRAPCOLS of WRAPROWS.

    Om bijvoorbeeld het bereik B4:B23 in rijen met elk 4 waarden in te pakken en het resulterende bereik van A tot Z te sorteren, construeert u een formule als deze:

    =WRAPROWS(SORT(B4:B23), 4)

    Om hetzelfde bereik in kolommen te verpakken, 10 waarden in elk, en de uitvoer alfabetisch te sorteren, is de formule:

    =WRAPCOLS(SORT(B4:B23), 10)

    De resultaten zien er als volgt uit:

    Tip. Om de waarden in de resulterende array te rangschikken in aflopende volgorde het derde argument ( volgorde ) van de SORT-functie op -1.

    WRAPCOLS alternatief voor Excel 365 - 2010

    In oudere Excel-versies waar de functie WRAPCOLS niet wordt ondersteund, kunt u uw eigen formule maken om de waarden van een eendimensionale matrix in kolommen te verpakken. Dit kan worden gedaan door 5 verschillende functies samen te gebruiken.

    WRAPCOLS alternatief om een rij om te zetten in een 2D bereik:

    IFERROR(IF(ROW(A1)> n , "", INDEX( rij_bereik , , RIJ(A1) + (KOLOM(A1)-1)*. n )), "")

    WRAPCOLS alternatief om een kolom om te zetten in een 2D-bereik:

    IFERROR(IF(ROW(A1)> n , "", INDEX( kolom_bereik , RIJ(A1) + (KOLOM(A1)-1)* n )), "")

    Waar n is het maximum aantal waarden per kolom.

    In de onderstaande afbeelding gebruiken we de volgende formule om van een éénrijig bereik (D4:J4) een drierijige matrix te maken.

    =IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")

    En deze formule verandert een bereik van één kolom (B4:B20) in een matrix van vijf rijen:

    =IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")

    De bovenstaande oplossingen evenaren de analoge WRAPCOLS-formules en leveren dezelfde resultaten op:

    =WRAPCOLS(D4:J4, 3, "")

    en

    =WRAPCOLS(B4:B20, 5, "")

    Vergeet niet dat in tegenstelling tot de dynamische array WRAPCOLS functie, de traditionele formules de één-formule-één-cel benadering volgen. Dus onze eerste formule wordt ingevoerd in D8 en 3 rijen naar beneden en 3 kolommen naar rechts gekopieerd. De tweede formule wordt ingevoerd in D14 en 5 rijen naar beneden en 4 kolommen naar rechts gekopieerd.

    Hoe deze formules werken

    In het hart van beide formules gebruiken we de INDEX-functie die een waarde teruggeeft uit de geleverde matrix op basis van een rij- en kolomnummer:

    INDEX(array, rij_nummer, [kolom_nummer])

    Aangezien we te maken hebben met een éénrijige matrix, kunnen we de rij_nummer argument, dus het staat standaard op 1. De truc is om col_num automatisch berekend voor elke cel waar de formule wordt gekopieerd. En hier is hoe we dit doen:

    RIJ(A1)+(KOLOM(A1)-1)*3)

    De functie ROW geeft het rijnummer van de A1-verwijzing terug, dat 1 is.

    De functie COLUMN geeft het kolomnummer van de A1-referentie, en dat is ook 1. Door 1 af te trekken wordt het nul. En vermenigvuldiging van 0 met 3 geeft 0.

    Dan tel je 1 teruggegeven door ROW en 0 teruggegeven door COLUMN bij elkaar op en krijg je 1 als resultaat.

    Zo ondergaat de INDEX-formule in de cel linksboven van het bestemmingsbereik (D8) deze transformatie:

    INDEX($D$4:$J$4, ,RIJ(A1) + (KOLOM(A1)-1)*3))

    veranderingen in

    INDEX($D$4:$J$4, ,1)

    en geeft de waarde terug van de 1e kolom van de opgegeven matrix, dat is "Appels" in D4.

    Wanneer de formule wordt gekopieerd naar cel D9, veranderen de relatieve celverwijzingen op basis van een relatieve positie van rijen en kolommen, terwijl de absolute bereikverwijzing ongewijzigd blijft:

    INDEX($D$4:$J$4,,, RIJ(A2)+(KOLOM(A2)-1)*3))

    verandert in:

    INDEX($D$4:$J$4,, 2+(1-1)*3))

    wordt:

    INDEX($D$4:$J$4,, 2))

    en geeft de waarde terug van de 2e kolom van de opgegeven matrix, dat is "Abrikozen" in E4.

    De IF-functie controleert het rijnummer en als het groter is dan het aantal rijen dat u hebt opgegeven (3 in ons geval), wordt een lege string ("") geretourneerd, anders het resultaat van de INDEX-functie:

    IF(ROW(A1)>3, "", INDEX(...))

    Tenslotte verhelpt de IFERROR-functie een #REF! fout die optreedt wanneer de formule naar meer cellen wordt gekopieerd dan werkelijk nodig is.

    De tweede formule die een kolom omzet in een 2D-bereik werkt met dezelfde logica. Het verschil is dat u de combinatie ROW + COLUMN gebruikt om de rij_nummer argument voor INDEX. De col_num parameter is in dit geval niet nodig, omdat er slechts één kolom is in de bronmatrix.

    WRAPROWS alternatief voor Excel 365 - 2010

    Om de waarden van een eendimensionale matrix in te pakken in rijen in Excel 2019 en eerder, kunt u de volgende alternatieven voor de functie WRAPROWS gebruiken.

    Zet een rij om in een 2D bereik:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( rij_bereik , KOLOM(A1)+(RIJ(A1)-1)*. n )), "")

    Verander een kolom in een 2D bereik:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( kolom_bereik , KOLOM(A1)+(RIJ(A1)-1)*. n )), "")

    Waar n is het maximum aantal waarden per rij.

    In onze voorbeeldgegevens gebruiken we de volgende formule om een bereik van één rij (D4:J4) om te zetten in een bereik van drie kolommen. De formule komt terecht in cel D8 en wordt vervolgens gekopieerd over 3 kolommen en 3 rijen.

    =IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")

    Om een bereik van 1 kolom (B4:B20) om te vormen tot een bereik van 5 kolommen, voert u de onderstaande formule in D14 in en sleept u deze over 5 kolommen en 4 rijen.

    =IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")

    In Excel 365 kunnen dezelfde resultaten worden bereikt met de equivalente WRAPCOLS-formules:

    =WRAPROWS(D4:J4, 3, "")

    en

    =WRAPROWS(B4:B20, 5, "")

    Hoe deze formules werken

    In wezen werken deze formules zoals in het vorige voorbeeld. Het verschil is hoe u de rij_nummer en col_num coördinaten voor de INDEX-functie:

    INDEX($D$4:$J$4,, KOLOM(A1)+(RIJ(A1)-1)*3))

    Om het kolomnummer voor de cel linksboven in het doelbereik (D8) te krijgen, gebruikt u deze uitdrukking:

    KOLOM(A1)+(RIJ(A1)-1)*3)

    dat verandert in:

    1+(1-1)*3

    en geeft 1.

    Als resultaat geeft de onderstaande formule de waarde van de eerste kolom van de gespecificeerde matrix, namelijk "Appels":

    INDEX($D$4:$J$4,, 1)

    Tot zover is het resultaat hetzelfde als in het vorige voorbeeld. Maar laten we eens kijken wat er in andere cellen gebeurt...

    In cel D9 veranderen de relatieve celverwijzingen als volgt:

    INDEX($D$4:$J$4,, KOLOM(A2)+(RIJ(A2)-1)*3))

    Dus, de formule verandert in:

    INDEX($D$4:$J$4,, 1+(2-1)*3))

    wordt:

    INDEX($D$4:$J$4,, 4))

    en geeft de waarde terug van de 4e kolom van de opgegeven matrix, dat is "Kersen" in G4.

    De IF-functie controleert het kolomnummer en indien dit groter is dan het aantal kolommen dat u hebt opgegeven, wordt een lege tekenreeks ("") geretourneerd, anders het resultaat van de INDEX-functie:

    IF(COLUMN(A1)>3, "", INDEX(...))

    Als finishing touch voorkomt IFERROR dat er #REF! fouten verschijnen in "extra" cellen als u de formule naar meer cellen kopieert dan eigenlijk nodig is.

    WRAPCOLS of WRAPROWS functie werkt niet

    Indien de "wrap"-functies niet beschikbaar zijn in uw Excel of een foutmelding opleveren, is de kans groot dat dit een van de onderstaande oorzaken heeft.

    #NAME? fout

    In Excel 365 kan een #NAME? fout optreden omdat u de naam van de functie verkeerd heeft gespeld. In andere versies geeft dit aan dat de functies niet worden ondersteund. Als workaround kunt u het WRAPCOLS alternatief of het WRAPROWS alternatief gebruiken.

    #FOUT!

    Er treedt een #VALUE-fout op als de vector argument is geen eendimensionale matrix.

    #NUM! fout

    Er treedt een #NUM-fout op als de wrap_count waarde 0 of een negatief getal is.

    #FOUT!

    Meestal geeft een #SPILL-fout aan dat er niet genoeg lege cellen zijn om de resultaten in te morsen. Wis de aangrenzende cellen, en de fout zal verdwijnen. Als de fout blijft bestaan, kijk dan wat #SPILL betekent in Excel en hoe u het kunt oplossen.

    Zo gebruik je de WRAPCOLS en WRAPROWS functies om een eendimensionaal bereik om te zetten in een tweedimensionale matrix in Excel. Ik dank je voor het lezen en hoop je volgende week op onze blog te zien!

    Praktijk werkboek om te downloaden

    WRAPCOLS en WRAPROWS functies - voorbeelden (.xlsx bestand)

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.