
Дугогодишњи читалац послао ми је занимљив проблем протекле недеље. Циљ је завршити текстуалним низом попут „МВФ“ за понедељак, среду, петак. Проблем је што се радни дани уносе као да / не скраћенице попут „НИНИНИН“ за „МВФ“.
Изазов
Која формула ће превести „Н“ и „И“ у скраћенице у радним данима, као што је приказано на снимку заслона изнад?
Радна свеска је у прилогу испод. Пошаљите свој одговор у коментаре.
Додатне поене за стил и елеганцију, али и решења за радне коње су у реду :)
Претпоставке
- Сви улази имају 7 знакова и садрже само „И“ или „Н“
- Дани се мапирају од недеље до суботе, СМТВТФС.
Опције решења - спојлери!
Опција # 1 - спајање грубе силе са функцијом МИД, додавање прелома линија ради читљивости:
=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","")
Ово би било типично решење и лепо илуструје како спајање функционише. Напомена: можете слободно користити преломе редова унутар траке са формулама да бисте олакшали читање формула.
Опција 2 - ТЕКСТЈОИН и МИД функција:
=TEXTJOIN("",TRUE,IF(MID(B5,(1,2,3,4,5,6,7),1)="N","",("S","M","T","W","T","F","S")))
Ово решење користи константе низа да би знатно поједноставило формулу.
Напомена: Јон Виттвер је објавио софистициранију верзију ове формуле у коментарима испод, окрећући константу низа користећи РОВ и ИНДИРЕЦТ.
Опција бр. 3 - ТЕКСТЈОИН, МИД и РЕПТ:
=TEXTJOIN("",1,REPT(("S","M","T","W","T","F","S"),MID(B5,(1,2,3,4,5,6,7),1)="Y"))
* Нешто * компактнија верзија која користи РЕПТ, искористивши чињеницу да ће МИД вратити ТРУЕ или ФАЛСЕ за сваку вредност, а ТРУЕ ће проценити на 1 или нулу унутар РЕПТ.