
Ένας από καιρό αναγνώστης μου έστειλε ένα ενδιαφέρον πρόβλημα αυτήν την περασμένη εβδομάδα. Ο στόχος είναι να καταλήξουμε σε μια συμβολοσειρά κειμένου όπως "MWF" για Δευτέρα, Τετάρτη, Παρασκευή. Το πρόβλημα είναι ότι οι καθημερινές εισάγονται ως ναι / όχι συντομογραφίες όπως "NYNYNYN" για "MWF".
Πρόκληση
Ποιος τύπος θα μεταφράσει τις συντομογραφίες "N" και "Y" στις καθημερινές, όπως φαίνεται στο παραπάνω στιγμιότυπο οθόνης;
Το βιβλίο εργασίας επισυνάπτεται παρακάτω. Δημοσιεύστε την απάντησή σας στα σχόλια.
Επιπλέον σημεία για στιλ και κομψότητα, αλλά οι λύσεις για τους εργαζομένους είναι επίσης ωραίες :)
Υποθέσεις
- Όλες οι είσοδοι είναι 7 χαρακτήρες και περιέχουν μόνο "Y" ή "N"
- Οι ημέρες χαρτογραφούνται από Κυριακή έως Σάββατο, 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.