Vzorec výzva - převést Y / N na dny v týdnu - Hádanka

Minulý týden mi minulý týden poslal zajímavý problém. Cílem je skončit s textovým řetězcem jako „MWF“ pro pondělí, středu, pátek. Problém je v tom, že ve všední dny se zadávají zkratky ano / ne, například „NYNYNYN“ pro „MWF“.

Výzva

Jaký vzorec přeloží zkratky „N“ a „Y“ na dny v týdnu, jak je uvedeno na snímku obrazovky výše?

Sešit je připojen níže. Zveřejněte svou odpověď v komentářích.

Extra body za styl a eleganci, ale řešení tahačů jsou také v pořádku :)

Předpoklady

  1. Všechny vstupy mají 7 znaků a obsahují pouze „Y“ nebo „N“
  2. Dny jsou mapovány od neděle do soboty, SMTWTFS.
Odpověď (kliknutím rozbalíte)

Možnosti řešení - spoilery!

Možnost č. 1 - zřetězení hrubou silou s funkcí MID, za účelem čitelnosti přidány konce řádků:

=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 bylo typické řešení a pěkně ilustruje, jak zřetězení funguje. Poznámka: Konce řádků uvnitř pruhu vzorců můžete používat k usnadnění čtení vzorců.

Možnost č. 2 - funkce 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 řešení používá maticové konstanty k výraznému zjednodušení vzorce.

Poznámka: Jon Wittwer zveřejnil v níže uvedených komentářích sofistikovanější verzi tohoto vzorce a roztočil konstantu pole pomocí ROW a INDIRECT.

Možnost č. 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"))

* Mírně * kompaktnější verze používající REPT, využívající výhody skutečnosti, že MID vrátí TRUE nebo FALSE pro každou hodnotu a TRUE vyhodnotí 1 nebo nulu uvnitř REPT.

Zajímavé články...