Turinys
Greičiausias būdas paversti stulpelį ar eilutę į dvimatį masyvą - naudoti WRAPCOLS arba WRAPROWS funkciją.
Nuo pat pirmųjų "Excel" dienų ji labai gerai skaičiuoja ir analizuoja skaičius. Tačiau manipuliuoti masyvais tradiciškai buvo sudėtinga. Įdiegus dinaminius masyvus, naudoti masyvų formules tapo daug paprasčiau. Dabar "Microsoft" išleidžia naujų dinaminių masyvų funkcijų rinkinį, skirtą manipuliuoti ir pertvarkyti masyvus. Šioje pamokoje sužinosite, kaip naudotis dviem tokiomis funkcijomis,WRAPCOLS ir WRAPROWS, kad stulpelį ar eilutę akimirksniu paverstumėte 2D masyvu.
"Excel" funkcija WRAPCOLS
"Excel" funkcija WRAPCOLS verčių eilutę arba stulpelį paverčia dvimatiu masyvu pagal nurodytą verčių skaičių eilutėje.
Sintaksė turi šiuos argumentus:
WRAPCOLS(vektorius, wrap_count, [pad_with])Kur:
- vektorius (privaloma) - šaltinio vienmatis masyvas arba diapazonas.
- wrap_count (privaloma) - didžiausias reikšmių skaičius viename stulpelyje.
- pad_with (neprivaloma) - vertė, kuria bus užpildytas paskutinis stulpelis, jei jam užpildyti nepakanka elementų. Jei nepateikiama, trūkstamos vertės bus užpildytos #N/A (numatytoji reikšmė).
Pavyzdžiui, jei norite pakeisti intervalą B5:B24 į dvimatį masyvą su 5 reikšmėmis kiekviename stulpelyje, formulė yra tokia:
=WRAPROWS(B5:B24, 5)
Įveskite formulę į bet kurią vieną ląstelę, ir ji automatiškai išsiplės į tiek ląstelių, kiek reikia. WRAPCOLS išraše vertės išdėstomos vertikaliai, iš viršaus į apačią, pagal wrap_count reikšmė. Pasiekus nustatytą skaičių, pradedamas naujas stulpelis.
"Excel" funkcija WRAPROWS
"Excel" funkcija WRAPROWS verčių eilutę arba stulpelį paverčia dvimatiu masyvu pagal nurodytą verčių skaičių eilutėje.
Sintaksė yra tokia:
WRAPROWS(vektorius, wrap_count, [pad_with])Kur:
- vektorius (privaloma) - šaltinio vienmatis masyvas arba intervalas.
- wrap_count (privaloma) - didžiausias reikšmių skaičius eilutėje.
- pad_with (neprivaloma) - reikšmė, kuria bus užpildyta paskutinė eilutė, jei nepakanka elementų jai užpildyti. Numatytoji reikšmė yra #N/A.
Pavyzdžiui, norint transformuoti intervalą B5:B24 į 2D masyvą, kurio kiekvienoje eilutėje yra 5 reikšmės, formulė yra tokia:
=WRAPROWS(B5:B24, 5)
Įveskite formulę į viršutinį kairįjį išsiliejimo intervalo langelį ir ji automatiškai užpildys visus kitus langelius. Funkcija WRAPROWS išdėsto reikšmes horizontaliai iš kairės į dešinę pagal wrap_count reikšmę. Pasiekus nustatytą skaičių, pradedama kurti nauja eilutė.
WRAPCOLS ir WRAPROWS prieinamumas
Abi funkcijas galima naudoti tik "Excel" programoje "Microsoft 365" ("Windows" ir "Mac") ir "Excel" programoje žiniatinkliui.
Ankstesnėse versijose galite naudoti tradicines sudėtingesnes formules, kad atliktumėte transformacijas iš stulpelio į masyvą ir iš eilutės į masyvą. Toliau šiame vadovėlyje išsamiai aptarsime alternatyvius sprendimus.
Patarimas. Norėdami atlikti atvirkštinę operaciją, t. y. pakeisti 2D masyvą į vieną stulpelį arba eilutę, naudokite atitinkamai funkciją TOCOL arba TOROW.
Kaip konvertuoti stulpelį / eilutę į diapazoną "Excel" programoje - pavyzdžiai
Dabar, kai jau supratote pagrindinius naudojimo būdus, atidžiau panagrinėkime keletą konkretesnių atvejų.
Nustatykite didžiausią reikšmių skaičių stulpelyje arba eilutėje
Priklausomai nuo pradinių duomenų struktūros, gali būti, kad juos tikslinga pertvarkyti į stulpelius (WRAPCOLS) arba eilutes (WRAPROWS). Kad ir kokią funkciją naudotumėte, ji yra wrap_count argumentas, kuriuo nustatomas maksimalus reikšmių skaičius kiekviename stulpelyje / eilutėje.
Pavyzdžiui, norėdami transformuoti intervalą B4:B23 į 2D masyvą, kad kiekviename stulpelyje būtų ne daugiau kaip 10 reikšmių, naudokite šią formulę:
=WRAPCOLS(B4:B23, 10)
Norint pertvarkyti tą patį intervalą pagal eilutes taip, kad kiekvienoje eilutėje būtų ne daugiau kaip 4 reikšmės, formulė yra tokia:
=WRAPROWS(B4:B23, 4)
Toliau pateiktame paveikslėlyje parodyta, kaip tai atrodo:
trūkstamų verčių užpildymas gautame masyve
Jei nepakanka reikšmių užpildyti visus gauto intervalo stulpelius ir (arba) eilutes, WRAPROWS ir WRAPCOLS grąžins #N/A klaidas, kad būtų išsaugota 2D masyvo struktūra.
Norėdami pakeisti numatytąją elgseną, galite nurodyti pasirinktinę pasirenkamojo elemento pad_with argumentas.
Pavyzdžiui, norėdami transformuoti intervalą B4:B21 į 2D masyvą, kurio plotis ne didesnis kaip 5 reikšmės, o paskutinę eilutę užpildyti brūkšneliais, jei nepakanka duomenų, naudokite šią formulę:
=WRAPROWS(B4:B21, 5, "-")
Norint trūkstamas reikšmes pakeisti nulinio ilgio eilutėmis (tuščiais langeliais), formulė yra tokia:
=WRAPROWS(B4:B21, 5, "")
Palyginkite rezultatus su numatytąja elgsena (D5 formulė), kai pad_with praleidžiamas:
Kelių eilučių sujungimas į 2D diapazoną
Norėdami sujungti kelias atskiras eilutes į vieną 2D masyvą, pirmiausia sudėkite eilutes horizontaliai, naudodami funkciją HSTACK, o tada apvyniokite reikšmes, naudodami WRAPROWS arba WRAPCOLS.
Pavyzdžiui, norint sujungti 3 eilučių (B5:J5, B7:G7 ir B9:F9) reikšmes ir suvesti jas į stulpelius, kurių kiekviename yra 10 reikšmių, formulė yra tokia:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Norint sujungti kelių eilučių reikšmes į 2D intervalą, kurio kiekvienoje eilutėje yra 5 reikšmės, formulė yra tokios formos:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Kelių stulpelių sujungimas į 2D masyvą
Norėdami sujungti kelis stulpelius į 2D intervalą, pirmiausia juos vertikaliai sudėkite į krūvą, naudodami funkciją VSTACK, o tada surikiuokite reikšmes į eilutes (WRAPROWS) arba stulpelius (WRAPCOLS).
Pavyzdžiui, norint sujungti 3 stulpelių (B5:J5, B7:G7 ir B9:F9) reikšmes į 2D intervalą, kurio kiekviename stulpelyje yra 10 reikšmių, formulė yra tokia:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Norėdami sujungti tuos pačius stulpelius į 2D intervalą, kurio kiekvienoje eilutėje yra 5 reikšmės, naudokite šią formulę:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Suvyniokite ir surūšiuokite masyvą
Jei šaltinio diapazone reikšmės išdėstytos atsitiktine tvarka, o išvestį norite surūšiuoti, elkitės taip:
- Pradinį masyvą surūšiuokite norimu būdu naudodami funkciją SORT.
- Pateikite surūšiuotą masyvą WRAPCOLS arba WRAPROWS.
Pavyzdžiui, norėdami suvesti intervalą B4:B23 į eilutes po 4 reikšmes kiekvienoje ir surūšiuoti gautą intervalą nuo A iki Z, sudarykite tokią formulę:
=WRAPROWS(SORT(B4:B23), 4)
Norint tą patį intervalą suvesti į stulpelius po 10 reikšmių kiekviename ir surūšiuoti išvestį abėcėlės tvarka, formulė yra tokia:
=WRAPCOLS(SORT(B4:B23), 10)
Rezultatai atrodo taip:
Patarimas. Jei norite gautame masyve esančias reikšmes išdėstyti taip mažėjančia tvarka , nustatyti trečiąjį argumentą ( sort_order ) funkcijos SORT reikšmė yra -1.
WRAPCOLS alternatyva "Excel 365" - 2010
Senesnėse "Excel" versijose, kuriose nepalaikoma funkcija WRAPCOLS, galite sukurti savo formulę, kad vienmačio masyvo reikšmes suvyniotumėte į stulpelius. Tai galima padaryti kartu naudojant 5 skirtingas funkcijas.
WRAPCOLS alternatyva, skirta eilutei konvertuoti į 2D diapazoną:
IFERROR(IF(ROW(A1)> n , "", INDEX( row_range , , , EILUTĖ(A1) + (STULPELIS(A1)-1)* n )), "")WRAPCOLS alternatyva, skirta paversti stulpelį 2D intervalu:
IFERROR(IF(ROW(A1)> n , "", INDEX( column_range , EILUTĖ(A1) + (STULPELIS(A1)-1)* n )), "")Kur n yra didžiausias reikšmių skaičius viename stulpelyje.
Toliau pateiktame paveikslėlyje vienos eilutės intervalą (D4:J4) paverčiame trijų eilučių masyvu pagal šią formulę.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
Ši formulė pakeičia vieno stulpelio intervalą (B4:B20) į penkių eilučių masyvą:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Šie sprendimai atkartoja analogiškas WRAPCOLS formules ir duoda tuos pačius rezultatus:
=WRAPCOLS(D4:J4, 3, "")
ir
=WRAPCOLS(B4:B20, 5, "")
Atminkite, kad, skirtingai nei dinaminio masyvo WRAPCOLS funkcija, tradicinėms formulėms taikomas vienos formulės ir vieno langelio metodas. Taigi, mūsų pirmoji formulė įrašoma į D8 ir kopijuojama 3 eilutėmis žemyn ir 3 stulpeliais į dešinę. Antroji formulė įrašoma į D14 ir kopijuojama 5 eilutėmis žemyn ir 4 stulpeliais į dešinę.
Kaip veikia šios formulės
Abiejose formulėse naudojama funkcija INDEX, kuri iš pateikto masyvo grąžina reikšmę pagal eilutės ir stulpelio numerį:
INDEX(masyvas, eilutės_numeris, [stulpelio_numeris])Kadangi turime reikalų su vienos eilutės masyvu, galime praleisti eilutės_num argumentas, todėl numatytasis nustatymas yra 1. col_num automatiškai apskaičiuojamas kiekvienoje ląstelėje, į kurią kopijuojama formulė. Štai kaip tai padaryti:
EILUTĖ(A1)+(STULPELIS(A1)-1)*3)
Funkcija ROW grąžina A1 nuorodos eilutės numerį, kuris yra 1.
Funkcija COLUMN grąžina A1 nuorodos stulpelio numerį, kuris taip pat yra 1. Atėmus 1, jis tampa nuliu, o padauginus 0 iš 3 gaunamas 0.
Tada sudėsite 1, gautą iš ROW, ir 0, gautą iš COLUMN, ir gausite 1.
Tokiu būdu paskirties srities (D8) viršutiniame kairiajame langelio kampe esanti INDEX formulė bus pakeista:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
pakeitimai
INDEX($D$4:$J$4, ,1)
ir grąžina nurodyto masyvo 1-ojo stulpelio reikšmę, t. y. D4 stulpelio "Apples" reikšmę.
Kai formulė nukopijuojama į ląstelę D9, santykinės ląstelių nuorodos pasikeičia pagal santykinę eilučių ir stulpelių padėtį, o absoliučioji diapazono nuoroda išlieka nepakitusi:
INDEX($D$4:$J$4,, EILUTĖ(A2)+(STULPELIS(A2)-1)*3))
virsta:
INDEX($D$4:$J$4,, 2+(1-1)*3))
tampa:
INDEX($D$4:$J$4,, 2))
ir grąžina nurodyto masyvo 2-ojo stulpelio reikšmę, t. y. E4 stulpelio reikšmę "Apricots".
Funkcija IF patikrina eilutės numerį ir, jei jis didesnis už nurodytą eilučių skaičių (mūsų atveju - 3), grąžina tuščią eilutę (""), priešingu atveju - funkcijos INDEX rezultatą:
IF(ROW(A1)>3, "", INDEX(...))
Galiausiai funkcija IFERROR ištaiso #REF! klaidą, kuri atsiranda, kai formulė nukopijuojama į daugiau langelių, nei iš tikrųjų reikia.
Antroji formulė, kurioje stulpelis paverčiamas 2D diapazonu, veikia pagal tą pačią logiką. Skirtumas tas, kad, norėdami nustatyti eilutę, naudojate ROW + COLUMN kombinaciją. eilutės_num INDEX argumentas. col_num parametras šiuo atveju nereikalingas, nes šaltinio masyve yra tik vienas stulpelis.
WRAPROWS alternatyva "Excel 365" - 2010
Norėdami "Excel 2019" ir ankstesnėse programose suvynioti vienmačio masyvo reikšmes į eilutes, galite naudoti šias funkcijos WRAPROWS alternatyvas.
Transformuokite eilutę į 2D diapazoną:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , , STULPELIS(A1)+(EILUTĖ(A1)-1)* n )), "")Pakeiskite stulpelį į 2D diapazoną:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( column_range , STULPELIS(A1)+(EILUTĖ(A1)-1)* n )), "")Kur n yra didžiausias reikšmių skaičius eilutėje.
Mūsų pavyzdiniame duomenų rinkinyje vienos eilutės intervalui (D4:J4) paversti trijų stulpelių intervalu naudojame šią formulę. Formulė patenka į D8 langelį, tada kopijuojama per 3 stulpelius ir 3 eilutes.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Norėdami 1 stulpelio intervalą (B4:B20) pertvarkyti į 5 stulpelių intervalą, įveskite toliau pateiktą formulę į D14 ir vilkite ją per 5 stulpelius ir 4 eilutes.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
Programoje "Excel 365" tuos pačius rezultatus galima pasiekti naudojant lygiavertes WRAPCOLS formules:
=WRAPROWS(D4:J4, 3, "")
ir
=WRAPROWS(B4:B20, 5, "")
Kaip veikia šios formulės
Iš esmės šios formulės veikia kaip ir ankstesniame pavyzdyje. Skirtumas tas, kaip nustatote eilutės_num ir col_num funkcijos INDEX koordinatės:
INDEX($D$4:$J$4,, STULPELIS(A1)+(EILUTĖ(A1)-1)*3))
Norėdami gauti stulpelio numerį viršutiniame kairiajame langelio kampe (D8), naudokite šią išraišką:
STULPELIS(A1)+(EILUTĖ(A1)-1)*3)
kuris pakeičiamas į:
1+(1-1)*3
ir gauna 1.
Todėl toliau pateikta formulė grąžina nurodyto masyvo pirmojo stulpelio reikšmę, t. y. "Apples":
INDEX($D$4:$J$4,, 1)
Kol kas rezultatas toks pat, kaip ir ankstesniame pavyzdyje. Tačiau pažiūrėkime, kas vyksta kituose langeliuose...
Ląstelėje D9 santykinės ląstelių nuorodos pasikeičia taip:
INDEX($D$4:$J$4,, STULPELIS(A2)+(EILUTĖ(A2)-1)*3))
Taigi formulė virsta:
INDEKSAS($D$4:$J$4,, 1+(2-1)*3))
tampa:
INDEX($D$4:$J$4,, 4))
ir grąžina nurodyto masyvo 4-ojo stulpelio reikšmę, t. y. G4 stulpelio reikšmę "Cherries".
Funkcija IF patikrina stulpelio numerį ir, jei jis didesnis už nurodytą stulpelių skaičių, grąžina tuščią eilutę (""), priešingu atveju - funkcijos INDEX rezultatą:
IF(COLUMN(A1)>3, "", INDEX(...))
Baigiamoji funkcija IFERROR apsaugo nuo #REF! klaidų atsiradimo papildomuose langeliuose, jei formulę nukopijuosite į daugiau langelių, nei iš tikrųjų reikia.
Neveikia WRAPCOLS arba WRAPROWS funkcija
Jei "Excel" programoje nėra "apvyniojimo" funkcijų arba dėl jų atsiranda klaida, greičiausiai tai yra viena iš toliau nurodytų priežasčių.
#NAME?
Programoje "Excel 365" klaida #NAME? gali atsirasti, nes neteisingai parašėte funkcijos pavadinimą. Kitose versijose tai rodo, kad funkcijos nepalaikomos. Kaip apeinamąją priemonę galite naudoti WRAPCOLS alternatyvą arba WRAPROWS alternatyvą.
#VALUE! klaida
#VALUE klaida įvyksta, jei vektorius argumentas nėra vienmatis masyvas.
#NUM! klaida
#NUM klaida įvyksta, jei wrap_count reikšmė yra 0 arba neigiamas skaičius.
#SPILL! klaida
Dažniausiai #SPILL klaida rodo, kad nėra pakankamai tuščių langelių, į kuriuos būtų galima išpilti rezultatus. Išvalykite kaimyninius langelius, ir ji išnyks. Jei klaida išlieka, sužinokite, ką #SPILL reiškia "Excel" programoje ir kaip ją ištaisyti.
Štai kaip naudoti funkcijas WRAPCOLS ir WRAPROWS, kad "Excel" programoje vienmatį intervalą paverstumėte dvimatiu masyvu. Dėkoju, kad perskaitėte, ir tikiuosi, kad kitą savaitę susitiksime mūsų tinklaraštyje!
Atsisiųsti praktikos sąsiuvinį
WRAPCOLS ir WRAPROWS funkcijos - pavyzdžiai (.xlsx failas)