Izazov formule - pretvori Y / N u dane u tjednu - Puzzle

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

  1. Svi ulazi imaju 7 znakova i sadrže samo "Y" ili "N"
  2. Dani se mapiraju od nedjelje do subote, SMTWTFS.
Odgovor (kliknite za proširenje)

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.

Zanimljivi članci...