Formulas izaicinājums - pārveidot Y / N par nedēļas dienām - Puzle

Kāds ilggadējs lasītājs man pagājušajā nedēļā nosūtīja interesantu problēmu. Mērķis ir izveidot tādu teksta virkni kā "MWF" pirmdienai, trešdienai, piektdienai. Problēma ir tā, ka darba dienas tiek ievadītas kā jā / nē saīsinājumi, piemēram, "NYNYNYN" priekš "MWF".

Izaicinājums

Ar kādu formulu "N" un "Y" pārtulkos darba dienu saīsinājumus, kā parādīts iepriekš redzamajā ekrānuzņēmumā?

Darba grāmata ir pievienota zemāk. Ievietojiet savu atbildi komentāros.

Papildu punkti par stilu un eleganci, bet arī darba zirgu risinājumi ir lieliski :)

Pieņēmumi

  1. Visas ievades ir ar 7 rakstzīmēm un satur tikai "Y" vai "N"
  2. Dienas tiek kartētas no svētdienas līdz sestdienai, SMTWTFS.
Atbilde (noklikšķiniet, lai izvērstu)

Risinājuma iespējas - spoileri!

1. iespēja - rupja spēka savienošana ar MID funkciju, rindas pārtraukumi pievienoti lasāmībai:

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

Tas būtu tipisks risinājums, un tas labi parāda, kā notiek savienošana. Piezīme: formulu joslā varat brīvi izmantot rindiņu pārtraukumus, lai formulas būtu vieglāk lasāmas.

2. iespēja - TEXTJOIN un MID funkcija:

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

Šis risinājums izmanto masīva konstantes, lai vienkārši ievērojami formulētu.

Piezīme: Jon Wittwer zemāk esošajos komentāros ievietoja sarežģītāku šīs formulas versiju, palielinot masīva konstanti, izmantojot ROW un INDIRECT.

3. iespēja - TEXTJOIN, MID un REPT:

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

* Nedaudz * kompaktāka versija, izmantojot REPT, izmantojot faktu, ka MID katrai vērtībai atgriezīs TRUE vai FALSE, un TRUE REPT iekšpusē tiks novērtēta kā 1 vai nulle.

Interesanti raksti...