Izziv formule - pretvori Y / N v dni v tednu - Uganka

Dolgoletni bralec mi je minuli teden poslal zanimivo težavo. Cilj je, da na koncu dobite besedilni niz, kot je "MWF" za ponedeljek, sredo, petek. Težava je v tem, da se delavniki vnesejo kot okrajšave da / ne, kot je "NYNYNYN" za "MWF".

Izziv

Katera formula bo prevedla "N" in "Y" v okrajšave v tednu, kot je prikazano na zgornjem posnetku zaslona?

Delovni zvezek je priložen spodaj. Odgovor objavite v komentarjih.

Dodatne točke za slog in eleganco, ampak tudi rešitve za delovne konje so v redu :)

Predpostavke

  1. Vsi vnosi imajo 7 znakov in vsebujejo samo "Y" ali "N"
  2. Dnevi so preslikani od nedelje do sobote, SMTWTFS.
Odgovor (kliknite za razširitev)

Možnosti rešitve - spojlerji!

Možnost # 1 - združevanje surove sile s funkcijo MID, dodani so prelomi vrstic za berljivost:

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

To bi bila tipična rešitev in lepo ponazarja, kako združevanje deluje. Opomba: za lažje branje formul lahko uporabite prelome vrstic znotraj vrstice s formulami.

Možnost # 2 - TEXTJOIN in MID funkcija:

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

Ta rešitev uporablja konstante matrike, da precej preprosto poenostavi formulo.

Opomba: Jon Wittwer je v spodnjih komentarjih objavil bolj izpopolnjeno različico te formule in vrtil konstanto matrike z uporabo ROW in INDIRECT.

Možnost št. 3 - TEXTJOIN, MID in REPT:

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

* Nekoliko * bolj kompaktna različica z uporabo REPT, pri čemer izkoristi dejstvo, da bo MID vrnil TRUE ali FALSE za vsako vrednost, TRUE pa bo znotraj REPT ocenil na 1 ali nič.

Zanimive Članki...