Innholdsfortegnelse
Den raskeste måten å transformere en kolonne eller rad med verdier til en todimensjonal matrise er å bruke funksjonen WRAPCOLS eller WRAPROWS.
Siden de tidligste dagene med Excel har det vært veldig flink til å beregne og analysere tall. Men å manipulere matriser har tradisjonelt vært en utfordring. Innføringen av dynamiske matriser gjorde bruken av matriseformler mye enklere. Og nå slipper Microsoft et sett med nye dynamiske array-funksjoner for å manipulere og omforme arrays. Denne opplæringen vil lære deg hvordan du bruker to slike funksjoner, WRAPCOLS og WRAPROWS, for å transformere en kolonne eller rad til en 2D-array på kort tid.
Excel WRAPCOLS-funksjonen
WRAPCOLS-funksjonen i Excel transformerer en rad eller kolonne med verdier til en todimensjonal matrise basert på det angitte antallet verdier per rad.
Syntaksen har følgende argumenter:
WRAPCOLS(vector, wrap_count, [pad_with])Hvor:
- vektor (påkrevd) - kildens endimensjonale matrise eller rekkevidde.
- wrap_count (obligatorisk) – det maksimale antallet verdier per kolonne.
- pad_with (valgfritt) - verdien som skal fylles med den siste kolonnen hvis det ikke er nok elementer til å fylle den. Hvis de utelates, vil de manglende verdiene fylles med #N/A (standard).
For eksempel, for å endre området B5:B24 til en 2-dimensjonal matrise med 5 verdier per kolonne, formelen er:
=WRAPROWS(B5:B24, 5)
Du skriver innargumentet vektor er ikke en endimensjonal matrise.
#NUM! error
En #NUM-feil oppstår hvis wrap_count -verdien er 0 eller negativt tall.
#SPILL! feil
Oftest indikerer en #SPILL-feil at det ikke er nok tomme celler til å søle resultatene inn i. Rydd nabocellene, og det vil være borte. Hvis feilen vedvarer, sjekk ut hva #SPILL betyr i Excel og hvordan du fikser det.
Det er hvordan du bruker funksjonene WRAPCOLS og WRAPROWS til å konvertere et endimensjonalt område til en todimensjonal matrise i Excel. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!
Øvningsarbeidsbok for nedlasting
WRAPCOLS- og WRAPROWS-funksjoner - eksempler (.xlsx-fil)
formel i en enkelt celle, og den søles automatisk inn i så mange celler som nødvendig. I WRAPCOLS-utgangen er verdiene ordnet vertikalt, fra topp til bunn, basert på wrap_count-verdien. Etter at tellingen er nådd, startes en ny kolonne.
Excel WRAPROWS-funksjonen
WRAPROWS-funksjonen i Excel konverterer en rad eller kolonne med verdier til en todimensjonal matrise basert på antall verdier per rad du angir.
Syntaksen er som følger:
WRAPROWS(vector, wrap_count, [pad_with])Hvor:
- vektor (obligatorisk) - kilden endimensjonal array eller range.
- wrap_count (obligatorisk) – maks. antall verdier per rad.
- pad_with (valgfritt) – verdien til pad med den siste raden hvis det ikke er nok elementer til å fylle den. Standard er #N/A.
For å for eksempel transformere området B5:B24 til en 2D-matrise med 5 verdier i hver rad, er formelen:
=WRAPROWS(B5:B24, 5)
Du skriver inn formelen i cellen øverst til venstre i utslippsområdet, og den fyller ut alle andre celler automatisk. WRAPROWS-funksjonen arrangerer verdiene horisontalt, fra venstre til høyre, basert på wrap_count -verdien. Etter å ha nådd tellingen starter den en ny rad.
WRAPCOLS og WRAPROWS tilgjengelighet
Begge funksjonene er kun tilgjengelige i Excel for Microsoft 365 (Windows og Mac) og Excel for nettet.
I tidligereversjoner, kan du bruke tradisjonelle mer komplekse formler for å utføre kolonne-til-matrise og rad-til-matrise-transformasjoner. Videre i denne opplæringen vil vi diskutere de alternative løsningene i detalj.
Tips. For å gjøre en omvendt operasjon, dvs. endre en 2D-array til en enkelt kolonne eller rad, bruk henholdsvis TOCOL eller TOROW-funksjonen.
Hvordan konvertere kolonne/rad til område i Excel - eksempler
Nå som du har fått en forståelse av den grunnleggende bruken, la oss se nærmere på noen flere spesifikke tilfeller.
Angi maksimalt antall verdier per kolonne eller rad
Avhengig av strukturen til de opprinnelige dataene dine, kan du finne det egnet til å omorganiseres i kolonner (WRAPCOLS) eller rader (WRAPROWS). Uansett hvilken funksjon du bruker, er det wrap_count -argumentet som bestemmer det maksimale antallet verdier i hver kolonne/rad.
For eksempel, for å transformere området B4:B23 til en 2D-matrise, slik at hver kolonne har maksimalt 10 verdier, bruk denne formelen:
=WRAPCOLS(B4:B23, 10)
For å omorganisere det samme området for rad, slik at hver rad har maksimalt 4 verdier, er formelen :
=WRAPROWS(B4:B23, 4)
Bildet nedenfor viser hvordan dette ser ut:
Pad mangler verdier i den resulterende matrisen
I tilfelle det ikke er nok verdier å fylle ut alle kolonnene/radene i det resulterende området, WRAPROWS og WRAPCOLS vil returnere #N/A-feil for å beholde strukturen til 2D-matrisen.
For å endre standardoppførsel, kan du angi en egendefinert verdi for det valgfrie pad_with -argumentet.
For eksempel, for å transformere området B4:B21 til en 2D-matrise med maksimalt 5 verdier bred, og fylle den siste rad med bindestreker hvis det ikke er nok data til å fylle den, bruk denne formelen:
=WRAPROWS(B4:B21, 5, "-")
For å erstatte de manglende verdiene med null-lengde strenger (blanks), er formelen:
=WRAPROWS(B4:B21, 5, "")
Sammenlign resultatene med standardoppførselen (formel i D5) der pad_with er utelatt:
Slå sammen flere rader til 2D-område
For å kombinere noen få separate rader til en enkelt 2D-matrise, stabler du først radene horisontalt ved hjelp av HSTACK-funksjonen, og pakker deretter verdiene ved hjelp av WRAPROWS eller WRAPCOLS.
For eksempel, for å slå sammen verdiene fra 3 rader (B5:J5, B7:G7 og B9:F9) og pakkes inn i kolonner, som hver inneholder 10 verdier, er formelen:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
For å kombinere verdier fra flere rader til en 2D-område der hver rad inneholder 5 verdier, formelen har denne formen:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
C slå sammen flere kolonner til 2D-array
For å slå sammen flere kolonner til et 2D-område, stable dem først vertikalt ved hjelp av VSTACK-funksjonen, og sett deretter verdiene inn i rader (WRAPROWS) eller kolonner (WRAPCOLS).
For å kombinere verdiene fra 3 kolonner (B5:J5, B7:G7 og B9:F9) til et 2D-område hvor hver kolonne inneholder 10 verdier, er formelen:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
For å kombineresamme kolonner inn i et 2D-område der hver rad inneholder 5 verdier, bruk denne formelen:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Bruk og sorter matrisen
I situasjoner hvor kildeområdet har verdier i tilfeldig rekkefølge mens du ønsker at utdataene skal sorteres, fortsett på denne måten:
- Sorter startmatrisen slik du vil bruke SORT-funksjonen.
- Lever den sorterte matrisen til WRAPCOLS eller WRAPROWS.
For eksempel, for å pakke området B4:B23 inn i rader, 4 verdier i hver, og sortere det resulterende området fra A til Å, konstruer en formel slik:
=WRAPROWS(SORT(B4:B23), 4)
For å pakke det samme området inn i kolonner, 10 verdier i hver, og sortere utdataene alfabetisk, er formelen:
=WRAPCOLS(SORT(B4:B23), 10)
Resultatene ser ut som følger :
Tips. For å ordne verdiene i den resulterende matrisen i synkende rekkefølge , sett det tredje argumentet ( sort_order ) til SORT-funksjonen til -1.
WRAPCOLS-alternativ for Excel 365 - 2010
I eldre Excel-versjoner der WRAPCOLS-funksjonen ikke støttes, kan du bygge din egen formel for å pakke verdiene fra en endimensjonal matrise inn i kolonner. Dette kan gjøres ved å bruke 5 forskjellige funksjoner sammen.
WRAPCOLS alternativ for å konvertere en rad til 2D-område:
IFERROR(IF(ROW(A1)> n , "" , INDEX( radområde , , ROW(A1) + (COLUMN(A1)-1)* n )), "")WRAPCOLS alternativ for å konvertere en kolonne til 2D område:
IFERROR(HVIS(RAD(A1)> n ,"", INDEX( kolonne_område , ROW(A1) + (KOLONNE(A1)-1)* n )), "")Hvor n er det maksimale antallet verdier per kolonne.
I bildet nedenfor bruker vi følgende formel for å gjøre om et en-rads område (D4:J4) til en tre-rads matrise.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
Og denne formelen endrer et én-kolonne område (B4:B20) til en fem-rads matrise:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Løsningene ovenfor emulerer de analoge WRAPCOLS formlene og gi de samme resultatene:
=WRAPCOLS(D4:J4, 3, "")
og
=WRAPCOLS(B4:B20, 5, "")
Vær oppmerksom på at i motsetning til funksjonen for dynamisk array WRAPCOLS, følger de tradisjonelle formlene en-formel-en-celle tilnærming. Så, vår første formel legges inn i D8 og kopieres 3 rader ned og 3 kolonner til høyre. Den andre formelen legges inn i D14 og kopieres 5 rader ned og 4 kolonner til høyre.
Hvordan disse formlene fungerer
I hjertet av begge formlene bruker vi INDEKS-funksjonen som returnerer en verdi fra den oppgitte matrisen basert på et rad- og kolonnenummer:
INDEX(array, row_num, [column_num])Ettersom vi har å gjøre med en-rads array, kan vi utelate row_num argumentet, så det er standard til 1. Trikset er å ha col_num beregnes automatisk for hver celle der formelen er kopiert. Og slik gjør vi dette:
ROW(A1)+(COLUMN(A1)-1)*3)
ROW-funksjonen returnerer radnummeret til A1-referansen, som er 1.
COLUMN-funksjonen returnerer kolonnenummeret tilA1-referansen, som også er 1. Hvis du trekker fra 1, blir den til null. Og å multiplisere 0 med 3 gir 0.
Deretter legger du sammen 1 returnert av ROW og 0 returnert av KOLONNE og får 1 som et resultat.
På denne måten, INDEX-formelen i den øvre -venstre celle i destinasjonsområdet (D8) gjennomgår denne transformasjonen:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
endres til
INDEX($D$4:$J$4, ,1)
og returnerer verdien fra den første kolonnen av den spesifiserte matrisen, som er "Apples" i D4.
Når formelen kopieres til celle D9, endres de relative cellereferansene basert på en relativ plassering av rader og kolonner mens den absolutte rekkeviddereferansen forblir uendret:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
blir til:
INDEX($D$4:$J$4,, 2+(1-1)*3))
blir:
INDEX($D$4:$J$4,, 2))
og returnerer verdien fra 2. kolonne i den angitte matrisen, som er "Aprikoser" i E4.
HVIS-funksjonen sjekker radnummeret og hvis det er større enn antallet rader du spesifiserte (3 i vårt tilfelle) returnerer en tom streng ( ""), ellers resultatet av INDEX-funksjonen:
IF(ROW(A1)>3, "", INDEX(…))
Til slutt fikser IFERROR-funksjonen en #REF! feil som oppstår når formelen kopieres til flere celler enn virkelig nødvendig.
Den andre formelen som konverterer en kolonne til 2D-område fungerer med samme logikk. Forskjellen er at du bruker ROW + COLUMN-kombinasjonen for å finne ut row_num -argumentet for INDEX. Parameteren col_num er ikke nødvendig i dette tilfellet siden det bare erén kolonne i kildematrisen.
WRAPROWS-alternativ for Excel 365 - 2010
For å pakke verdiene fra en endimensjonal matrise inn i rader i Excel 2019 og tidligere, kan du bruke følgende alternativer til WRAPROWS-funksjonen.
Transformer en rad til 2D-område:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , COLUMN(A1)+(ROW(A1)-1)* n )), "")Endre en kolonne til 2D-område:
IFERROR(IF( COLUMN(A1)> n , "", INDEX( column_range , COLUMN(A1)+(RAD(A1)-1)* n )) , "")Hvor n er det maksimale antallet verdier per rad.
I vårt eksempeldatasett bruker vi følgende formel for å konvertere et enradsområde (D4) :J4) i et område med tre kolonner. Formelen lander i celle D8, og blir deretter kopiert over 3 kolonner og 3 rader.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
For å omforme et 1-kolonne område (B4:B20) til et 5-kolonne område, skriv inn formelen nedenfor i D14 og dra den over 5 kolonner og 4 rader.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
I Excel 365 kan de samme resultatene oppnås med tilsvarende WRAPCOLS-formler:
=WRAPROWS(D4:J4, 3, "")
og
=WRAPROWS(B4:B20, 5, "")
Hvordan disse formlene fungerer
I hovedsak fungerer disse formlene som i forrige eksempel. Forskjellen ligger i hvordan du bestemmer radnummer og kolonnenummer koordinatene for INDEX-funksjonen:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
For å få kolonnenummeret for den øvre venstre celle i destinasjonsområdet (D8), bruker du denneuttrykk:
COLUMN(A1)+(ROW(A1)-1)*3)
som endres til:
1+(1-1)*3
og gir 1.
Som et resultat returnerer formelen nedenfor verdien fra den første kolonnen i den angitte matrisen, som er "Apples":
INDEX($D$4:$J$4,, 1)
Så langt er resultatet det samme som i forrige eksempel. Men la oss se hva som skjer i andre celler...
I celle D9 endres de relative cellereferansene som følger:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
Så, formelen transformeres til:
INDEX($D$4:$J$4,, 1+(2-1)*3))
blir:
INDEX($D$4:$J$4,, 4))
og returnerer verdien fra den fjerde kolonnen i den angitte matrisen, som er "Cherries" i G4.
HVIS-funksjonen sjekker kolonnenummeret og hvis det er større enn antallet kolonner du spesifiserte, returnerer en tom streng (""), ellers resultatet av INDEX-funksjonen:
IF(COLUMN(A1)>3, "", INDEX(…))
Som prikken over i-en forhindrer IFERROR #REF! feil vises i "ekstra" celler hvis du kopierer formelen til flere celler enn faktisk nødvendig.
WRAPCOLS- eller WRAPROWS-funksjonen fungerer ikke
Hvis "wrap"-funksjonene ikke er tilgjengelige i Excel eller resultere i en feil, er det mest sannsynlig en av årsakene nedenfor.
#NAME? feil
I Excel 365, en #NAME? feil kan oppstå fordi du har stavet funksjonens navn feil. I andre versjoner indikerer det at funksjonene ikke støttes. Som en løsning kan du bruke WRAPCOLS-alternativet eller WRAPROWS-alternativet.
#VALUE! feil
En #VALUE-feil oppstår hvis