Výzva so vzorcom - prevod Y / N na dni v týždni Hádanka

Dlhoročný čitateľ mi minulý týždeň poslal zaujímavý problém. Cieľom je skončiť s textovým reťazcom ako „MWF“ pre pondelok, stredu, piatok. Problém je v tom, že vo všedné dni sa zadávajú skratky typu áno / nie ako „NYNYNYN“ pre „MWF“.

Výzva

Aký vzorec prevedie skratky „N“ a „Y“ na všedné dni, ako je to znázornené na snímke obrazovky vyššie?

Zošit je priložený nižšie. Svoju odpoveď uverejnite v komentároch.

Body navyše za štýl a eleganciu, ale riešenia ťažného koňa sú tiež v poriadku :)

Domnienky

  1. Všetky vstupy majú 7 znakov a obsahujú iba „Y“ alebo „N“
  2. Dni sa mapujú od nedele do soboty, SMTWTFS.
Odpoveď (kliknutím rozbalíte)

Možnosti riešenia - spojlery!

Možnosť č. 1 - zreťazenie hrubou silou s funkciou MID, pre čitateľnosť pridané zalomenia riadkov:

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

Toto by bolo typické riešenie a pekne ilustruje, ako funguje zreťazenie. Poznámka: V riadku vzorcov môžete voľne používať zalomenia riadkov, aby sa vzorce ľahšie čítali.

Možnosť č. 2 - Funkcia TEXTJOIN a MID:

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

Toto riešenie využíva konštanty poľa na jednoduché zjednodušenie vzorca.

Poznámka: Jon Wittwer zverejnil v komentároch nižšie sofistikovanejšiu verziu tohto vzorca a pomocou ROW a INDIRECT roztočil konštantu poľa.

Možnosť č. 3 - TEXTJOIN, MID a REPT:

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

* Mierne * kompaktnejšia verzia využívajúca REPT, ktorá využíva skutočnosť, že MID vráti TRUE alebo FALSE pre každú hodnotu a TRUE vyhodnotí vo vnútri REPT hodnotu 1 alebo nulu.

Zaujímavé články...