फॉर्मूला चुनौती - सप्ताह के दिनों में वाई / एन कन्वर्ट करें - पहेली

एक लंबे समय के पाठक ने मुझे पिछले हफ्ते एक दिलचस्प समस्या भेजी। लक्ष्य सोमवार, बुधवार, शुक्रवार के लिए "MWF" जैसे पाठ स्ट्रिंग के साथ समाप्त करना है। समस्या यह है कि सप्ताह के दिन "MWF" के लिए "NYNYNYN" जैसे हां / नहीं संक्षिप्त रूप में इनपुट होते हैं।

चुनौती

ऊपर दिए गए स्क्रीनशॉट में दिखाए गए अनुसार "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")))

यह समाधान सरणी स्थिरांक का उपयोग करने के लिए केवल सूत्र को काफी महत्वपूर्ण बनाता है।

नोट: जॉन विटवर्थ ने नीचे दिए गए टिप्पणियों में इस फॉर्मूले का अधिक परिष्कृत संस्करण पोस्ट किया, जिसमें 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 REPT के अंदर 1 या शून्य का मूल्यांकन करेगा।

दिलचस्प लेख...