
Egy régóta olvasó érdekes problémát küldött nekem az elmúlt héten. A cél az, hogy a hétfõre, szerdára, péntekre olyan szöveges karaktersorozatot kapjunk, mint az "MWF". A probléma az, hogy a hétköznapokat igen / nem rövidítésekként adják meg, például "NYNYNYN" az "MWF" kifejezésre.
Kihívás
Milyen képlet fordítja le az "N" és az "Y" kifejezéseket hétköznapi rövidítésekre, amint az a fenti képernyőképen látható?
A munkafüzet alább található. Tegye meg válaszát a megjegyzésekben.
Plusz pontok a stílusért és az eleganciáért, de a munkáslovas megoldások is rendben vannak :)
Feltételezések
- Minden bemenet 7 karakterből áll, és csak "Y" vagy "N" karaktert tartalmaz
- A napok feltérképezése vasárnaptól szombatig, SMTWTFS.
Megoldási lehetőségek - spoilerek!
1. opció - nyers erő összefűzése a MID funkcióval, az olvashatóság érdekében sor törések vannak hozzáadva:
=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","")
Ez egy tipikus megoldás lenne, és jól szemlélteti, hogyan működik az összefűzés. Megjegyzés: a képletsávon belül szabadon használhat sortöréseket a képletek könnyebb olvashatósága érdekében.
2. lehetőség - TEXTJOIN és MID funkció:
=TEXTJOIN("",TRUE,IF(MID(B5,(1,2,3,4,5,6,7),1)="N","",("S","M","T","W","T","F","S")))
Ez a megoldás tömbállandókat használ a képlet egyszerűsítéséhez.
Megjegyzés: Jon Wittwer ennek a képletnek egy kifinomultabb változatát tette közzé az alábbi megjegyzésekben, felpörgetve a tömb konstansát a ROW és INDIRECT használatával.
3. lehetőség - TEXTJOIN, MID és REPT:
=TEXTJOIN("",1,REPT(("S","M","T","W","T","F","S"),MID(B5,(1,2,3,4,5,6,7),1)="Y"))
A * kissé * kompaktabb, a REPT-t használó verzió, kihasználva azt a tényt, hogy a MID minden értéknél IGAZ vagy HAMIS értéket ad vissza, a TRUE pedig a REPT belsejében 1-re vagy nullára értékel.