Kaavan haaste - muunna Y / N viikonpäiviksi - Palapeli

Pitkäaikainen lukija lähetti minulle mielenkiintoisen ongelman viime viikolla. Tavoitteena on päästä tekstimerkkijonoon "MWF" maanantaina, keskiviikkona, perjantaina. Ongelmana on, että arkipäivät syötetään kyllä ​​/ ei-lyhenteinä, kuten "NYNYNYN" sanalle "MWF".

Haaste

Mikä kaava kääntää "N" ja "Y" arkipäivän lyhenteiksi yllä olevan kuvakaappauksen mukaisesti?

Työkirja on liitteenä alla. Lähetä vastauksesi kommentteihin.

Lisäpisteitä tyylistä ja eleganssista, mutta myös työhevosratkaisut ovat hienoja :)

Oletukset

  1. Kaikki syötteet ovat 7 merkkiä ja sisältävät vain "Y" tai "N"
  2. Päivät kartoitetaan sunnuntaista lauantaihin, SMTWTFS.
Vastaa (laajenna napsauttamalla)

Ratkaisuvaihtoehdot - spoilerit!

Vaihtoehto # 1 - raakavoiman ketjutus MID-toiminnolla, rivinvaihdot lisätty luettavuuden vuoksi:

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

Tämä olisi tyypillinen ratkaisu, ja se kuvaa hienosti ketjutuksen toimintaa. Huomaa: Voit vapaasti käyttää kaavapalkin sisällä olevia rivinvaihtoja kaavojen helpottamiseksi.

Vaihtoehto # 2 - TEXTJOIN ja MID-toiminto:

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

Tämä ratkaisu käyttää matriisivakioita yksinkertaisesti kaavan huomattavasti.

Huomaa: Jon Wittwer lähetti tämän kaavan kehittyneemmän version alla oleviin kommentteihin, pyörittäen matriisivakiota ROW- ja INDIRECT-toiminnoilla.

Vaihtoehto # 3 - TEXTJOIN, MID ja REPT:

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

* Hieman * kompaktimpi versio, joka käyttää REPT: ää, hyödyntäen sitä, että MID palauttaa TOSI tai EPÄTOSI jokaiselle arvolle ja TOSI arvioi arvon 1 tai 0 REPT: n sisällä.

Mielenkiintoisia artikkeleita...