Provocare cu formula - convertește Y / N în zile din săptămână - Puzzle

Un cititor de multă vreme mi-a trimis o problemă interesantă săptămâna trecută. Scopul este de a termina cu un șir de text precum „MWF” pentru luni, miercuri, vineri. Problema este că zilele săptămânii sunt introduse ca abrevieri da / nu, cum ar fi „NYNYNYN” pentru „MWF”.

Provocare

Ce formulă va traduce „N” și „Y” în abrevieri în timpul săptămânii, așa cum se arată în captura de ecran de mai sus?

Caietul de lucru este atașat mai jos. Postează-ți răspunsul în comentarii.

Puncte suplimentare pentru stil și eleganță, dar și soluțiile calului de lucru sunt bine :)

Ipoteze

  1. Toate intrările sunt de 7 caractere și conțin doar „Y” sau „N”
  2. Zilele sunt mapate de duminică până sâmbătă, SMTWTFS.
Răspundeți (faceți clic pentru a extinde)

Opțiuni de soluție - spoilere!

Opțiunea # 1 - concatenarea forței brute cu funcția MID, întreruperi de linie adăugate pentru lizibilitate:

=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","")

Aceasta ar fi o soluție tipică și ilustrează frumos cum funcționează concatenarea. Notă: sunteți liber să utilizați întreruperi de linie în interiorul barei de formule pentru a facilita citirea formulelor.

Opțiunea # 2 - TEXTJOIN și funcția MID:

=TEXTJOIN("",TRUE,IF(MID(B5,(1,2,3,4,5,6,7),1)="N","",("S","M","T","W","T","F","S")))

Această soluție utilizează constante matrice pentru a pur și simplu formula considerabil.

Notă: Jon Wittwer a postat o versiune mai sofisticată a acestei formule în comentariile de mai jos, rotind constanta matricei folosind ROW și INDIRECT.

Opțiunea # 3 - TEXTJOIN, MID și REPT:

=TEXTJOIN("",1,REPT(("S","M","T","W","T","F","S"),MID(B5,(1,2,3,4,5,6,7),1)="Y"))

O versiune * ușor * mai compactă folosind REPT, profitând de faptul că MID va returna TRUE sau FALSE pentru fiecare valoare, iar TRUE va evalua la 1 sau zero în REPT.

Articole interesante...