Содржина
Најбрзиот начин да се трансформира колона или ред со вредности во дводимензионална низа е користењето на функцијата WRAPCOLS или WRAPROWS.
Од најраните денови на Excel, беше многу добар во пресметување и анализа на бројки. Но, манипулирањето со низи традиционално е предизвик. Воведувањето на динамички низи многу го олесни користењето на формулите на низи. И сега, Мајкрософт објавува сет на нови функции на динамична низа за манипулирање и преобликување низи. Овој туторијал ќе ве научи како да користите две такви функции, WRAPCOLS и WRAPROWS, за да трансформирате колона или ред во 2D низа за кратко време.
Excel WRAPCOLS функција
Функцијата WRAPCOLS во Excel трансформира ред или колона од вредности во дводимензионална низа врз основа на наведениот број вредности по ред.
Синтаксата ги има следните аргументи:
WRAPCOLS(vector, wrap_count, [pad_with])Каде:
- вектор (задолжително) - изворната еднодимензионална низа или опсег.
- wrap_count (задолжително) - максималниот број на вредности по колона.
- pad_with (изборно) - вредноста што треба да се пополни со последната колона ако нема доволно ставки за да се пополни. Ако се испушти, вредностите што недостасуваат ќе бидат пополнети со #N/A (стандардно).
На пример, за промена на опсегот B5:B24 во 2-димензионална низа со 5 вредности по колона, формулата е:
=WRAPROWS(B5:B24, 5)
Внесете гоаргументот вектор не е еднодимензионална низа.
#NUM! грешка
Се појавува грешка #NUM ако вредноста wrap_count е 0 или негативен број.
#SPILL! грешка
Најчесто, грешката #SPILL покажува дека нема доволно празни ќелии за да се прелеат резултатите. Исчистете ги соседните ќелии и ќе го нема. Ако грешката продолжи, проверете што значи #SPILL во Excel и како да ја поправите.
Така да ги користите функциите WRAPCOLS и WRAPROWS за да конвертирате еднодимензионален опсег во дводимензионална низа во Excel. Ви благодарам што прочитавте и се надевам дека ќе се видиме на нашиот блог следната недела!
Вежбајте работна книга за преземање
WRAPCOLS и WRAPROWS функции - примери (датотека .xlsx)
>формула во која било клетка и таа автоматски се истура во онолку ќелии колку што е потребно. Во излезот WRAPCOLS, вредностите се распоредени вертикално, од горе до долу, врз основа на вредноста wrap_count. Откако ќе се достигне броењето, се започнува нова колона.
Excel WRAPROWS функција
Функцијата WRAPROWS во Excel конвертира ред или колона од вредности во дводимензионална низа врз основа на бројот на вредности по ред што ќе ги наведете.
Синтаксата е следна:
WRAPROWS(вектор, wrap_count, [pad_with])Каде:
- вектор (задолжително) - изворот еднодимензионален низа или опсег.
- wrap_count (задолжително) - максималниот број на вредности по ред.
- pad_with (изборно) - вредноста за рампа со последниот ред ако нема доволно ставки за да се пополни. Стандардно е #N/A.
На пример, за да се трансформира опсегот B5:B24 во 2D низа со 5 вредности во секој ред, формулата е:
=WRAPROWS(B5:B24, 5)
Ја внесувате формулата во горната лева ќелија од опсегот на излевање и таа автоматски ги пополнува сите други ќелии. Функцијата WRAPROWS ги распоредува вредностите хоризонтално, од лево кон десно, врз основа на вредноста wrap_count . Откако ќе го достигне броењето, започнува нов ред.
Достапност WRAPCOLS и WRAPROWS
Двете функции се достапни само во Excel за Microsoft 365 (Windows и Mac) и Excel за веб.
Претходноверзии, можете да користите традиционални посложени формули за да извршите трансформации од колона во низа и од ред во низа. Понатаму во ова упатство, детално ќе разговараме за алтернативните решенија.
Совет. За да направите обратна операција, т.е. да смените 2D низа во една колона или ред, користете ја функцијата TOCOL или TOROW, соодветно.
Како да конвертирате колона / ред во опсег во Excel - примери
Сега кога ја сфативте основната употреба, ајде внимателно да погледнеме неколку поспецифични случаи.
Поставете максимален број вредности по колона или ред
Во зависност од структурата на вашите оригинални податоци, можеби сметате дека е соодветно да се преуреди во колони (WRAPCOLS) или редови (WRAPROWS). Која функција и да ја користите, аргументот wrap_count е тој што го одредува максималниот број на вредности во секоја колона/ред.
На пример, за трансформирање на опсегот B4:B23 во 2D низа, така што секоја колона има максимум 10 вредности, користете ја оваа формула:
=WRAPCOLS(B4:B23, 10)
За да го преуредите истиот опсег по ред, така што секој ред има најмногу 4 вредности, формулата е :
=WRAPROWS(B4:B23, 4)
Сликата подолу покажува како ова изгледа:
Недостасуваат вредности во добиената низа на подлогата
Во случај да нема доволно вредности за пополнување сите колони/редови од добиениот опсег, WRAPROWS и WRAPCOLS ќе вратат #N/A грешки за да ја задржат структурата на 2D низата.
За промена на стандарднитеоднесување, можете да обезбедите приспособена вредност за опционалниот аргумент pad_with .
На пример, за да го трансформирате опсегот B4:B21 во 2D низа со максимални 5 вредности широк, и да ја пополните последната ред со цртички ако нема доволно податоци за да се пополни, користете ја оваа формула:
=WRAPROWS(B4:B21, 5, "-")
За да ги замените вредностите што недостасуваат со низи со нулта должина (празни места), формулата е:
=WRAPROWS(B4:B21, 5, "")
Ве молиме споредете ги резултатите со стандардното однесување (формулата во D5) каде што е испуштено pad_with :
Спојте повеќе редови во 2D опсег
За да комбинирате неколку одделни редови во една 2D низа, прво ги поставувате редовите хоризонтално користејќи ја функцијата HSTACK, а потоа ги завиткувате вредностите користејќи WRAPROWS или WRAPCOLS.
На пример, за да ги споите вредностите од 3 реда (B5:J5, B7:G7 и B9:F9) и завиткајте ги во колони, од кои секоја содржи 10 вредности, формулата е:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Да се комбинираат вредностите од повеќе редови во 2D опсег каде што секој ред содржи 5 вредности, формулата ја има оваа форма:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
C обединете повеќе колони во 2D низа
За да споите неколку колони во 2D опсег, прво ги ставате вертикално користејќи ја функцијата VSTACK, а потоа ги завиткувате вредностите во редови (WRAPROWS) или колони (WRAPCOLS).
На пример, за да се комбинираат вредностите од 3 колони (B5:J5, B7:G7 и B9:F9) во 2D опсег каде секоја колона содржи 10 вредности, формулата е:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
За комбинирање наистите колони во 2D опсег каде што секој ред содржи 5 вредности, користете ја оваа формула:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Завиткајте и сортирајте ја низата
Во ситуација кога опсегот на изворот има вредности во случаен редослед додека сакате излезот да биде подреден, постапете на овој начин:
- Сортирајте ја почетната низа онака како што сакате користејќи ја функцијата SORT.
- Обезбедете ја сортираната низа на WRAPCOLS или WRAPROWS.
На пример, за да го завиткате опсегот B4:B23 во редови, по 4 вредности во секоја и да го сортирате добиениот опсег од A до Z, конструирајте формула како оваа:
=WRAPROWS(SORT(B4:B23), 4)
За да го завиткате истиот опсег во колони, по 10 вредности во секоја и да го подредите излезот по азбучен ред, формулата е:
=WRAPCOLS(SORT(B4:B23), 10)
Резултатите изгледаат како што следува :
Совет. За да ги распоредите вредностите во добиената низа по опаѓачки редослед , поставете го третиот аргумент ( sort_order ) од функцијата SORT на -1.
WRAPCOLS алтернатива за Excel 365 - 2010
Во постарите верзии на Excel каде што функцијата WRAPCOLS не е поддржана, можете да изградите своја формула за да ги завиткате вредностите од еднодимензионална низа во колони. Ова може да се направи со користење на 5 различни функции заедно.
WRAPCOLS алтернатива за претворање на ред во 2D опсег:
IFERROR(IF(ROW(A1)> n , "" , INDEX( ред_опсег , , ROW(A1) + (COLUMN(A1)-1)* n )), "")WRAPCOLS алтернатива за претворање на колона во 2D опсег:
IFERROR(IF(ROW(A1)> n ,"", INDEX( опсег_колона , ROW(A1) + (COLUMN(A1)-1)* n )), "")Каде n е максималниот број на вредности по колона.
На сликата подолу, ја користиме следнава формула за да го претвориме опсегот од еден ред (D4:J4) во низа со три реда.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
И оваа формула го менува опсегот со една колона (B4:B20) во низа со пет реда:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Горенаведените решенија ги емулираат аналогните формули WRAPCOLS и ги произведува истите резултати:
=WRAPCOLS(D4:J4, 3, "")
и
=WRAPCOLS(B4:B20, 5, "")
Ве молиме имајте на ум дека за разлика од динамичната низа WRAPCOLS функцијата, традиционалните формули ги следат пристап со една формула-една клетка. Значи, нашата прва формула се внесува во D8 и се копира 3 реда надолу и 3 колони надесно. Втората формула се внесува во D14 и се копира 5 реда надолу и 4 колони надесно.
Како функционираат овие формули
Во срцето на двете формули, ја користиме функцијата INDEX која враќа вредност од доставената низа врз основа на број на ред и колона:
ИНДЕКС(низа, ред_број, [број_колона])Бидејќи имаме работа со низа од еден ред, можеме да го изоставиме аргументот row_num , па затоа е стандардно 1. Трикот е да се има col_num се пресметува автоматски за секоја ќелија каде што е копирана формулата. И еве како го правиме ова:
ROW(A1)+(COLUMN(A1)-1)*3)
Функцијата ROW го враќа бројот на редот на референцата A1, кој е 1.
Функцијата COLUMN го враќа бројот на колоната нареференцата А1, која исто така е 1. Со одземање 1 се претвора во нула. И со множење 0 со 3 се добива 0.
Потоа, собирате 1 вратено со ROW и 0 вратено со COLUMN и добивате 1 како резултат.
На овој начин, формулата INDEX во горниот -левата ќелија од дестинацискиот опсег (D8) се подложува на оваа трансформација:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
се менува во
INDEX($D$4:$J$4, ,1)
и ја враќа вредноста од првата колона од наведената низа, која е „Јаболка“ во D4.
Кога формулата се копира во ќелијата D9, релативните референци на ќелиите се менуваат врз основа на релативната позиција на редовите и колоните додека референцата за апсолутен опсег останува непроменета:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
се претвора во:
INDEX($D$4:$J$4,, 2+(1-1)*3))
станува:
INDEX($D$4:$J$4,, 2))
и ја враќа вредноста од 2-ра колона од наведената низа, која е „Apricots“ во E4.
Функцијата IF го проверува бројот на редот и ако е поголем од бројот на редови што сте го навеле (3 во нашиот случај) враќа празна низа ( ""), инаку резултатот од функцијата INDEX:
IF(ROW(A1)>3, "", INDEX(…))
Конечно, функцијата IFERROR поправа #REF! грешка што се јавува кога формулата се копира во повеќе ќелии отколку што навистина е потребно.
Втората формула што конвертира колона во 2D опсег работи со истата логика. Разликата е во тоа што ја користите комбинацијата ROW + COLUMN за да го дознаете аргументот row_num за INDEX. Параметарот col_num не е потребен во овој случај бидејќи има самоедна колона во изворната низа.
WRAPROWS алтернатива за Excel 365 - 2010
За да ги завиткате вредностите од еднодимензионална низа во редови во Excel 2019 и порано, можете да користите следните алтернативи на функцијата WRAPROWS.
Трансформирајте ред во 2D опсег:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , COLUMN(A1)+(ROW(A1)-1)* n )), "")Променете ја колоната во 2D опсег:
IFERROR(IF( COLUMN(A1)> n , "", INDEX( опсег_колона , COLUMN(A1)+(ROW(A1)-1)* n )) , "")Каде што n е максималниот број на вредности по ред.
Во нашиот примерок сет на податоци, ја користиме следнава формула за конвертирање опсег од еден ред (D4 :J4) во опсег од три колони. Формулата слетува во ќелијата D8, а потоа се копира низ 3 колони и 3 реда.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
За преобликување опсег од 1 колона (B4:B20) во опсег од 5 колони внесете ја формулата подолу во D14 и повлечете ја низ 5 колони и 4 редови.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
Во Excel 365, истите резултати може да се постигнат со еквивалентните формули WRAPCOLS:
=WRAPROWS(D4:J4, 3, "")
и
=WRAPROWS(B4:B20, 5, "")
Како функционираат овие формули
Во суштина, овие формули функционираат како во претходниот пример. Разликата е во тоа како ги одредувате координатите row_num и col_num за функцијата INDEX:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
за да го добиете бројот на колоната за горниот левата ќелија во одредишниот опсег (D8), вие го користите оваизраз:
COLUMN(A1)+(ROW(A1)-1)*3)
што се менува во:
1+(1-1)*3
и дава 1.
Како резултат на тоа, формулата подолу ја враќа вредноста од првата колона на наведената низа, која е „Јаболка“:
INDEX($D$4:$J$4,, 1)
Досега, резултатот е ист како и во претходната пример. Но, да видиме што се случува во другите ќелии...
Во ќелијата D9, релативните референци на ќелиите се менуваат на следниов начин:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
Значи, формулата се трансформира во:
INDEX($D$4:$J$4,, 1+(2-1)*3))
станува:
INDEX($D$4:$J$4,, 4))
и ја враќа вредноста од 4-та колона од наведената низа, која е „Cherries“ во G4.
Функцијата IF го проверува бројот на колоната и ако е поголем од бројот на колони што сте го навеле, враќа празна низа (""), во спротивно резултатот од функцијата INDEX:
IF(COLUMN(A1)>3, "", INDEX(…))
Како допир, IFERROR го спречува #REF! грешки од појавување во „дополнителни“ ќелии ако ја копирате формулата на повеќе ќелии отколку што навистина е потребно.
Функцијата WRAPCOLS или WRAPROWS не работи
Ако функциите „завиткање“ не се достапни во вашиот Excel или ќе резултира со грешка, најверојатно тоа е една од долунаведените причини.
#NAME? грешка
Во Excel 365, #NAME? може да се појави грешка затоа што погрешно сте го напишале името на функцијата. Во други верзии, тоа покажува дека функциите не се поддржани. Како решение, можете да користите алтернатива WRAPCOLS или алтернатива WRAPROWS.
#VALUE! грешка
Се појавува грешка #VALUE ако