
Kokkuvõte
Mitme vaste eraldamiseks lahtritesse saate eraldi veergudes kasutada massiivivalemit, mis põhineb INDEXil ja VÄIKESEL. Näidatud näites on valem F5-s järgmine:
(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))
See on massiivivalem ja see tuleb sisestada klahvidega Control + Tõst + Enter.
Pärast valemi sisestamist esimesse lahtrisse lohistage see teiste lahtrite täitmiseks alla ja alla.
Selgitus
Märkus: selles valemis kasutatakse kahte nimega vahemikku: "nimed" tähistavad C5: C11 ja "rühmad" viitavad B5: B11. Need nimed on määratletud ka ülaltoodud ekraanipildis.
Selle valemi põhisisu on järgmine: "n-nda vaste" vastava rea numbri loomiseks kasutame funktsiooni VÄIKE. Kui meil on rea number, edastame selle lihtsalt funktsiooni INDEX, mis tagastab selle rea väärtuse.
Trikk on selles, et SMALL töötab massiiviga, mille IF on selles bitis dünaamiliselt konstrueerinud:
IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)
See koodilõik testib nimega vahemiku "rühmad" väärtust E5-s. Kui see on leitud, tagastab rea numbri massi suhtelistest ridade numbritest, mis on loodud järgmisega:
ROW(names)-MIN(ROW(names))+1
Lõpptulemuseks on massiiv, mis sisaldab numbreid, kui on vaste, ja FALSE, kui mitte:
(1; FALSE; FALSE; FALSE; FALSE; 6; FALSE)
See massiiv läheb VÄIKSEKS. Väärtuse k väärtus n (n) tuleneb laienevast vahemikust:
COLUMNS($E$5:E5)
Kui üle tulemustabeli kopeeritakse, laieneb vahemik, põhjustades k (n-nda) kasvu. Funktsioon SMALL tagastab iga sobiva rea numbri, mis tarnitakse funktsioonile INDEX kui rida_number, massiivina nimega vahemik "nimed".
Vigade käitlemine
Kui VEERUD tagastab k-le väärtuse, mida pole olemas, viskab VÄIKE vea #NUM. See juhtub pärast kõigi matšide toimumist. Vea summutamiseks mähime valemi IFERROR-i funktsiooni, et tõrkeid tabada ja tühi string ("") tagastada.