Предизвикателство на формула - конвертирайте Y / N в дни от седмицата - Пъзел

Дългогодишен читател ми изпрати интересен проблем през изминалата седмица. Целта е да завършите с текстов низ като "MWF" за понеделник, сряда, петък. Проблемът е, че делничните дни се въвеждат като да / не съкращения като "NYNYNYN" за "MWF".

Предизвикателство

Каква формула ще преведе „N“ и „Y“ в съкращения от делничния ден, както е показано на екранната снимка по-горе?

Работната книга е приложена по-долу. Публикувайте отговора си в коментарите.

Допълнителни точки за стил и елегантност, но решенията за работни коне също са добре :)

Предположения

  1. Всички входове са 7 знака и съдържат само "Y" или "N"
  2. Дните се картографират от неделя до събота, SMTWTFS.
Отговор (щракнете за разгъване)

Опции за решение - спойлери!

Вариант №1 - конкатенация с груба сила с функцията MID, добавени са прекъсвания на линии за четливост:

=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 и MID функция:

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

Това решение използва константи на масива, за да опрости значително формулата.

Забележка: Jon Wittwer публикува по-усъвършенствана версия на тази формула в коментарите по-долу, завъртайки константата на масива, използвайки ROW и INDIRECT.

Вариант # 3 - TEXTJOIN, MID и REPT:

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

* Малко * по-компактна версия, използваща REPT, като се възползва от факта, че MID ще върне TRUE или FALSE за всяка стойност, а TRUE ще оцени на 1 или нула в REPT.

Интересни статии...