Formül mücadelesi - Y / N'yi haftanın günlerine çevirin - Bulmaca

Uzun süredir okuyan bir okuyucu, geçen hafta bana ilginç bir problem gönderdi. Amaç, Pazartesi, Çarşamba, Cuma için "MWF" gibi bir metin dizesi oluşturmaktır. Sorun, hafta içi günlerin "MWF" için "NYNYNYN" gibi evet / hayır kısaltmaları olarak girilmesidir.

Meydan okuma

Yukarıdaki ekran görüntüsünde gösterildiği gibi "N" ve "Y" harflerini hafta içi kısaltmalara çevirecek formül nedir?

Çalışma kitabı aşağıda eklenmiştir. Cevabınızı yorumlara yazın.

Tarz ve zarafet için ekstra puanlar, ancak güçlü çözümler de iyidir :)

Varsayımlar

  1. Tüm girişler 7 karakterdir ve sadece "Y" veya "N" içerir
  2. Günler Pazar-Cumartesi, SMTWTFS olarak eşleştirilir.
Cevap (genişletmek için tıklayın)

Çözüm seçenekleri - spoiler!

Seçenek # 1 - MID işlevi ile kaba kuvvet birleştirme, okunabilirlik için satır sonları eklendi:

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

Bu tipik bir çözüm olabilir ve birleştirme işleminin nasıl çalıştığını güzel bir şekilde gösterir. Not: Formüllerin okunmasını kolaylaştırmak için formül çubuğunun içindeki satır sonlarını kullanmakta serbestsiniz.

Seçenek # 2 - METİNBİRLEŞTİR ve ORTA işlevi:

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

Bu çözüm, formülü önemli ölçüde basitleştirmek için dizi sabitlerini kullanır.

Not: Jon Wittwer, aşağıdaki yorumlarda bu formülün daha karmaşık bir versiyonunu yayınlayarak, SATIR ve DOLAYLI kullanarak dizi sabitini döndürdü.

Seçenek # 3 - METİNBİRLEŞTİR, ORTA ve TEKRAR:

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

REPT kullanan * biraz * daha kompakt bir sürüm, MID'nin her bir değer için DOĞRU veya YANLIŞ döndüreceği ve DOĞRU, REPT içinde 1 veya sıfır olarak değerlendirilecektir.

Ilginç makaleler...