Valemi väljakutse - teisenda Y / N nädalapäevadeks Pusle

Lang L: none (table-of-contents)

Kauaaegne lugeja saatis mulle viimase nädala jooksul huvitava probleemi. Eesmärk on saada tekstistring nagu "MWF" esmaspäevaks, kolmapäevaks, reedeks. Probleem on selles, et tööpäevad sisestatakse jah / ei lühenditena nagu "NYNYNYN" tähele "MWF".

Väljakutse

Milline valem tõlgib tähed "N" ja "Y" argipäeva lühenditeks, nagu on näidatud ülaltoodud ekraanipildil?

Töövihik on lisatud allpool. Postitage oma vastus kommentaaridesse.

Lisapunktid stiili ja elegantsi eest, aga ka tööhobuste lahendused sobivad hästi :)

Eeldused

  1. Kõik sisendid on 7 tähemärki ja sisaldavad ainult "Y" või "N"
  2. Päevad on kaardistatud pühapäevast laupäevani, SMTWTFS.
Vastus (klõpsake laiendamiseks)

Lahendusvõimalused - spoilerid!

Variant # 1 - toore jõu liitmine funktsiooniga MID, loetavuse jaoks lisatakse reavahetused:

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

See oleks tüüpiline lahendus ja illustreerib kenasti liitmise toimimist. Märkus. Valemite lugemise hõlbustamiseks võite vabalt kasutada reavahetusi valemiriba sees.

Valik nr 2 - funktsioon TEXTJOIN ja MID:

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

See lahendus kasutab massiivikonstante valemi märkimisväärseks lihtsustamiseks.

Märkus: Jon Wittwer postitas allpool toodud kommentaaridesse selle valemi keerukama versiooni, keerates massiivi konstandi ROW ja INDIRECT abil.

Valik nr 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"))

* Veidi * kompaktsem versioon, mis kasutab REPT-i, kasutades ära asjaolu, et MID tagastab iga väärtuse puhul TÕENE või VALE ja TÕENE hindab REPT-i sisuks 1 või null.

Huvitavad Artiklid...