एक्सेल में गोल्फिंग के लिए टिप्स?


20

यह अजीब है कि मैंने इसे नहीं देखा है, क्योंकि एक्सेल कोड गोल्फिंग के लिए एक वैध भाषा प्रतीत होती है (बावजूद इसके 'कंपाइलर' मुफ्त नहीं है)।

एक्सेल गोल्फिंग में कुछ हद तक एक वाइल्डकार्ड है, जो मध्यम जटिलता की गोल्फिंग चुनौतियों में अच्छा है, और कभी-कभी चुनौतियों को भी सरल करता है। अधिक बार नहीं, एक्सेल स्ट्रिंग हेरफेर और मिश्रित स्ट्रिंग-संख्या हेरफेर के साथ चुनौतियों पर अच्छा है।

एक्सेल में गोल्फिंग के लिए आपके पास क्या सामान्य सुझाव हैं? मैं उन विचारों की तलाश कर रहा हूं, जो सामान्य रूप से गोल्फ समस्याओं को कोड करने के लिए लागू किए जा सकते हैं जो एक्सेल (नॉट वीबीए) के लिए कुछ हद तक विशिष्ट हैं। कृपया, प्रति उत्तर एक टिप।


4
जाहिरा तौर पर सेलुलर-ऑटोमेटा कुछ ऐसा नहीं है जो एक्सेल से संबंधित है ... :(

मैं सोच रहा था कि क्या VBA के साथ UDF बनाना वैध है ?
danieltakeshi

1
@danieltakeshi - नहीं; अच्छी तरह से, एक एक्सेल जवाब के रूप में नहीं - यदि आप इसके बजाय एक्सेल वीबीए का उपयोग करते हैं और फिर इसे तत्काल विंडो से कॉल करते हैं, तो एक्टीवेटशीट या एक सबरूटीन, जिसे यह आमतौर पर वैध माना जाता है
टेलर स्कॉट

जवाबों:


11

संदर्भ आशुलिपि:

यदि आपके प्रोग्राम को कई इनपुट लेने की आवश्यकता है, तो आप उन सभी को एक साथ स्कूप करने में सक्षम होना चाह सकते हैं। एक सरणी के रूप में कई कोशिकाओं को पढ़ने के लिए, एक उदाहरण के रूप में ऐसा कर सकता है:

उदाहरण:
=len(A1)+Len(B1)+LEN(C1)
हो सकता है
=SUM(LEN(A1:C1))

=SUM(LEN(A1:C1 A2:C2 A3:C3))
हो सकता है
=SUM(LEN(A1:C3))

=SUM(LEN(A1:A1024))
हो सकता है
=SUM(LEN(A:A))

=SUM(LEN(A:A B:B C:C))
हो सकता है
=SUM(LEN(A:C))


1
मुझे पता है कि यह एक शानदार टिप नहीं है , लेकिन यह विशिष्ट है कि मुझे लगा कि इसे शामिल किया जाना चाहिए।

9

संक्षिप्त

CONCATENATEसमारोह के साथ बदला जा सकता है &जब तक कि पहले तर्क एक स्ट्रिंग, या सेल है समय का प्रतीक 100%,।

उदाहरण:
=CONCATENATE(A1,B1)
को छोटा किया जा सकता है
=A1&B1


9

Arrays के साथ वैश्वीकरण

जब भी कोई फ़ंक्शन एक सिंगलटन के बजाय एक तर्क के रूप में एक सरणी लेता है, तो वह फ़ंक्शन समान सरणी को परिणामी मान के साथ एक सरणी भी आउटपुट करेगा।

उदाहरण: के
=LEN(A1)+LEN(B2)+LEN(C3)
साथ प्रतिस्थापित किया जा सकता है
=SUM(LEN({A1,B2,C3}))


1
इस प्रक्रिया को आमतौर पर "वैश्वीकरण" कहा जाता है यदि मेरी स्मृति मुझे अच्छी तरह से सेवा देती है।
कॉनर ओ'ब्रायन

@ ConorO'Brien धन्यवाद! मैंने अपना जवाब बदल दिया!

2

पाठ के लिए एक नंबर परिवर्तित करना:

यह एक बहुत ही सरल टिप है, लेकिन फिर भी कुछ गैर के लिए उपयोगी हो सकता है ...

  • यदि आपको सूत्र से किसी संख्या को पाठ में बदलने की आवश्यकता है, तो संख्या के दो भागों को एक स्ट्रिंग (यानी 1&23) के रूप में शामिल करने के लिए संघटक संचालक का उपयोग करें ।
  • यदि आपको सेल संदर्भ (यानी A1) द्वारा उपयोग के लिए एक नंबर को पाठ में बदलने की आवश्यकता है, तो अतिरिक्त बाइट्स की आवश्यकता को समाप्त करने के लिए सेल के नंबर प्रारूप को टेक्स्ट में बदलें ।
  • संख्या-से-पाठ विधियों की तुलना के लिए नीचे दिया गया चार्ट देखें।

त्वरित संदर्भ चार्ट:

+-------------------------------------------------------------------------------------+
|   | A               | B        | C         | D                | E                   |
|-------------------------------------------------------------------------------------|
| 1 | Formula         | Bytes    | Result    | ISTEXT(cell)¹    | ISTEXT(formula)²    |
|-------------------------------------------------------------------------------------|
| 2 | =TEXT(123,0)    | 12       | 123       | TRUE             | TRUE                |
| 3 | ="123"          | 6        | 123       | TRUE             | TRUE                |
| 4 | =1&23           | 5        | 123       | TRUE             | TRUE                |
| 5 | '123            | 4        | 123       | TRUE             | NOT VALID           |
| 6 | 123             | 3        | 123       | TRUE             | FALSE               |
| 7 | 123             | 3        | 123       | FALSE            | FALSE               |
+-------------------------------------------------------------------------------------+

Note: The result for cell C6 has been formatted as text, whereas the result for C7 has not.

¹ Denotes =ISTEXT(C2), =ISTEXT(C3), =ISTEXT(C4), etc.
² Denotes =ISTEXT(TEXT(123,0)), =ISTEXT("123"), =ISTEXT(1&23), etc.

1

कोशिकाओं के सरणियों का वैश्वीकरण:

सरणियों के साथ टिप वेक्टराइज़ेशन दिखाता है कि आप सरणी के भीतर विशिष्ट स्वरूपण का उपयोग करके किसी सरणी के साथ किसी फ़ंक्शन को कैसे नीचे गिरा सकते हैं। कोशिकाओं के साथ एक ही काम करना संभव है, और लंबे समय में आपको कई बाइट्स बचाएंगे। कहो कि आपके पास निम्नलिखित शीट है:

उदाहरण पत्रक

और हम एक फल का उच्चतम शेल्फ जीवन खोजना चाहते हैं।

वैश्वीकरण के बिना, एक दो फ़ार्मुलों का उपयोग कर सकता है जैसे: यहाँ छवि विवरण दर्ज करें

और यह एक सही उत्तर देता है, लेकिन इस गोल्फ के लिए स्कोर अपरंपरागत है, और संभवतः इसे व्यापक रूप से स्वीकार नहीं किया जाएगा। उसके शीर्ष पर, यह एक ड्रैग डाउन फ़ंक्शन (Ew) का उपयोग करता है, जो एक भ्रामक उत्तर के लिए बनाता है।

इसके बजाय, हम E2 में सूत्र के साथ फ़ंक्शन को स्तंभ D सही पर रख सकते हैं। ऐसा करने के लिए, आप (इस मामले में बी 2 और सी 2) अपने वैरिएबल को उस श्रेणी के साथ प्रतिस्थापित करते हैं जिसे आप परीक्षण करना चाहते हैं। इस प्रकार, आपका सूत्र बन जाता है:
यहाँ छवि विवरण दर्ज करें

यह आपकी प्रविष्टि को ठीक से स्कोर करने योग्य बनाने के साथ ही आपको कुछ बाइट्स से बचाता है।


1

बूलियन शॉर्टहैंड:

कार्यों =TRUE()और =FALSE()कार्यों का उपयोग करने के बजाय , का उपयोग करें =1=1और =1=2


0

ISBLANK () आशुलिपि:

=ISBLANK(A1)उपयोग =A1=0करने के बजाय , यह निर्धारित करने के लिए उपयोग करें कि कोई सेल (यानी A1) खाली है या नहीं।

नोट: यदि सेल A1 में है तो यह शॉर्टकट काम नहीं करेगा0उस मामले में, आपको उपयोग करने की आवश्यकता होगी =A1=""


0

छोटी चादर के नाम

यदि आप नाम बदल Sheet2जाते हैं Sतो Sheet2!a0बनने के लिए संदर्भ देते हैं S!a0

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.