![](https://cdn.wiki-base.com/1658665/formula_challenge_-_convert_yn_to_days_of_week_puzzle.png.webp)
Dugogodišnji čitatelj poslao mi je zanimljiv problem proteklog tjedna. Cilj je na kraju dobiti tekstualni niz poput "MWF" za ponedjeljak, srijedu i petak. Problem je što se radni dani unose kao da / ne skraćenice poput "NYNYNYN" za "MWF".
Izazov
Koja će formula prevesti "N" i "Y" u skraćenice u radnim danima kako je prikazano na gornjoj snimci zaslona?
Radna knjiga je priložena u nastavku. Odgovor objavite u komentarima.
Dodatne bodove za stil i eleganciju, ali i rješenja za radne konje su u redu :)
Pretpostavke
- Svi ulazi imaju 7 znakova i sadrže samo "Y" ili "N"
- Dani se mapiraju od nedjelje do subote, SMTWTFS.
Opcije rješenja - spojleri!
Opcija # 1 - spajanje grube sile s funkcijom MID, dodani su prijelomi redaka radi čitljivosti:
=IF(MID(B5,1,1)="Y","S","")& IF(MID(B5,2,1)="Y","M","")& IF(MID(B5,3,1)="Y","T","")& IF(MID(B5,4,1)="Y","W","")& IF(MID(B5,5,1)="Y","T","")& IF(MID(B5,6,1)="Y","F","")& IF(MID(B5,7,1)="Y","S","")
Ovo bi bilo tipično rješenje i lijepo ilustrira kako spajanje funkcionira. Napomena: slobodno možete koristiti prijelome redaka unutar trake s formulama kako biste olakšali čitanje formula.
Opcija br. 2 - TEXTJOIN i MID funkcija:
=TEXTJOIN("",TRUE,IF(MID(B5,(1,2,3,4,5,6,7),1)="N","",("S","M","T","W","T","F","S")))
Ovo rješenje koristi konstante niza za znatno jednostavnije formuliranje.
Napomena: Jon Wittwer objavio je sofisticiraniju verziju ove formule u komentarima ispod, vrteći konstantu niza pomoću ROW i INDIRECT.
Opcija br. 3 - TEKSTJOIN, MID i REPT:
=TEXTJOIN("",1,REPT(("S","M","T","W","T","F","S"),MID(B5,(1,2,3,4,5,6,7),1)="Y"))
* Nešto * kompaktnija verzija koja koristi REPT, iskoristivši činjenicu da će MID vratiti TRUE ili FALSE za svaku vrijednost, a TRUE će unutar REPT-a procijeniti na 1 ili nulu.