Πρόκληση φόρμουλας - μετατρέψτε Y / N σε ημέρες της εβδομάδας - Παζλ

Πίνακας περιεχομένων

Ένας από καιρό αναγνώστης μου έστειλε ένα ενδιαφέρον πρόβλημα αυτήν την περασμένη εβδομάδα. Ο στόχος είναι να καταλήξουμε σε μια συμβολοσειρά κειμένου όπως "MWF" για Δευτέρα, Τετάρτη, Παρασκευή. Το πρόβλημα είναι ότι οι καθημερινές εισάγονται ως ναι / όχι συντομογραφίες όπως "NYNYNYN" για "MWF".

Πρόκληση

Ποιος τύπος θα μεταφράσει τις συντομογραφίες "N" και "Y" στις καθημερινές, όπως φαίνεται στο παραπάνω στιγμιότυπο οθόνης;

Το βιβλίο εργασίας επισυνάπτεται παρακάτω. Δημοσιεύστε την απάντησή σας στα σχόλια.

Επιπλέον σημεία για στιλ και κομψότητα, αλλά οι λύσεις για τους εργαζομένους είναι επίσης ωραίες :)

Υποθέσεις

  1. Όλες οι είσοδοι είναι 7 χαρακτήρες και περιέχουν μόνο "Y" ή "N"
  2. Οι ημέρες χαρτογραφούνται από Κυριακή έως Σάββατο, SMTWTFS.
Απάντηση (κάντε κλικ για επέκταση)

Επιλογές λύσης - spoilers!

Επιλογή # 1 - συνδυασμός brute force με τη συνάρτηση 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.

ενδιαφέροντα άρθρα...