Tantangan formula - ubah Y / T menjadi hari dalam seminggu - Membingungkan

Seorang pembaca lama mengirimi saya masalah menarik seminggu terakhir ini. Tujuannya adalah berakhir dengan string teks seperti "MWF" untuk Senin, Rabu, Jumat. Masalahnya adalah hari kerja dimasukkan sebagai singkatan ya / tidak seperti "NYNYNYN" untuk "MWF".

Tantangan

Rumus apa yang akan menerjemahkan singkatan "N" dan "Y" ke hari kerja seperti yang ditunjukkan pada gambar di atas?

Buku kerja terlampir di bawah ini. Posting jawaban Anda di komentar.

Poin ekstra untuk gaya dan keanggunan, tetapi solusi pekerja keras juga baik-baik saja :)

Asumsi

  1. Semua masukan terdiri dari 7 karakter dan hanya berisi "Y" atau "N"
  2. Hari dipetakan Minggu sampai Sabtu, SMTWTFS.
Jawab (klik untuk memperluas)

Opsi solusi - spoiler!

Opsi # 1 - penggabungan kekuatan brutal dengan fungsi MID, jeda baris ditambahkan agar terbaca:

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

Ini akan menjadi solusi yang khas, dan menggambarkan dengan baik cara kerja penggabungan. Catatan: Anda bebas menggunakan hentian baris di dalam bilah rumus untuk membuat rumus lebih mudah dibaca.

Opsi # 2 - Fungsi TEXTJOIN dan MID:

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

Solusi ini menggunakan konstanta larik untuk menyederhanakan rumusnya.

Catatan: Jon Wittwer memposting versi yang lebih canggih dari rumus ini pada komentar di bawah, memutar konstanta array menggunakan ROW dan INDIRECT.

Opsi # 3 - TEXTJOIN, MID, dan REPT:

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

Versi yang * sedikit * lebih ringkas menggunakan REPT, memanfaatkan fakta bahwa MID akan mengembalikan TRUE atau FALSE untuk setiap nilai, dan TRUE akan mengevaluasi ke 1 atau nol di dalam REPT.

Artikel yang menarik...