यहाँ क्या हो रहा है: यह
=LOOKUP(2,1/(B1:B12="meat"),C1:C12)
इस
=LOOKUP(2,1/{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE},C1:C12)
जो इस
=LOOKUP(2,{1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;#DIV/0!},C1:C12)
B1:B12="meat"
हिस्सा सही और गलत मूल्यों की एक सरणी के रूप में मूल्यांकन किया जाता है हो जाता हो जाता है। जब आप सत्य या गलत पर गणित करते हैं तो यह 1 या 0 में बदल जाता है। 1 से 1 या 0 को विभाजित करना सभी फव्वारे के लिए सभी trues और div/0 के लिए 1 देता है।
अब आप जानते हैं कि आपको वास्तव में दो चीजों (या तो 1 या एक div/0) से भरा सरणी है, तो आप किसी भी संख्या को 1 से अधिक की लुकअप कर सकते हैं और यह अंतिम 1 को वापस कर देगा सूची। आप =LOOKUP(800,...)
कर सकते हैं और यह अब भी "सबसे बड़ा मान जो लुकअप वैल्यू से कम या उसके बराबर है", या आपके मामले में 1.
तो दोनों कुछ मनमाने ढंग से हैं - यह केवल एक संख्या है जो 1 से अधिक है। इसका क्रूक्स लुकअप सरणी तर्क बनाने के लिए है जिसमें केवल 1s और त्रुटियां शामिल हैं - LOOKUP त्रुटियों को अनदेखा करता है।
बाइनरी खोजें
मैं तो यहाँ अनौपचारिक संस्करण है इस पर आधिकारिक दस्तावेज की जरूरत नहीं है,। लुकअप, ह्लुकअप, और वीएलओकेयूपी में एक तर्क है जहां डेटा को सॉर्ट किया गया है, तो आप फ़ंक्शन को बताते हैं। यदि वह तर्क गलत है, तो फ़ंक्शन अंत तक हर प्रविष्टि को हर तरह से देखता है। यदि वह तर्क सही है या छोड़ा गया है, तो फ़ंक्शन बाइनरी खोज का उपयोग करता है। यह ऐसा करता है - तर्क केवल अस्तित्व में है - क्योंकि एक बाइनरी खोज ओल 'एक-एक-बार की खोज से तेज है।
एक बाइनरी खोज मध्यम मूल्य को ढूंढकर और मांग किए गए मूल्य के विरुद्ध मूल्यांकन करके काम करती है। यदि मध्यम मूल्य बड़ा है, तो दाईं ओर सब कुछ छोड़ दिया जाता है - मांग मूल्य बाईं ओर होना चाहिए। यह बाएं आधा लेता है और इसका मध्य मूल्य पाता है। यदि यह बड़ा है, तो यह दाएं को छोड़ देता है और बाएं रखता है। जब तक आप मूल्य नहीं पाते हैं तब तक पुनरावृत्ति रखें।
तो LOOKUP(2,{1,1,#DIV/0!,1,1,#DIV/0!,1,1},...)
क्यों कुछ मनमाने ढंग से 1
के बजाय अंतिम 1
ढूंढता है? मुझे नहीं पता कि एमएस ने अपनी द्विआधारी खोज कैसे लागू की, इसलिए मुझे कुछ धारणाएं करनी हैं।मेरी धारणाएं हैं कि त्रुटि मान सरणी से बाहर फेंक दिए जाते हैं और जब प्रविष्टियों की संख्या (कोई मध्य मूल्य नहीं) होती है, तो मध्य के बाईं ओर का मान उपयोग किया जाता है। उन धारणाएं गलत हो सकती हैं, लेकिन परिणाम पर शून्य पर असर पड़ता है।
सबसे पहले, त्रुटियों को फेंक दें। अब आपके पास ये प्रविष्टियां हैं और उनकी मूल स्थिति
1 1 1 1 1 1
1 2 4 5 7 8
"मध्य" संख्या 1 (4) है। यह 2 से कम (मांग मूल्य) से कम है, इसलिए हम सबकुछ बाईं ओर फेंक देते हैं और दाईं ओर पुन: प्रसंस्करण करते हैं। अब हमारे पास
1 1 1
5 7 8
मध्यम मान 1 (7) है। यह 2 से कम है, इसलिए हम सबकुछ बाईं ओर फेंक देते हैं और दाईं ओर पुन: प्रसंस्करण करते हैं। अब हमारे पास
1
8
हम एक प्रविष्टि में हैं, इसलिए यह जवाब है। यदि मांग मूल्य अन्य सभी मूल्यों से अधिक है, तो एक बाइनरी खोज हमेशा अंतिम मान वापस कर देगी।
आपका मतलब 'बी 1: बी 1 =" मांस "' बी 1: बी 12' है। – ManishChristian
महान जवाब! तो यह एक हैक है! मैंने कभी कल्पना नहीं की है। यह अब मुझे स्पष्ट है। धन्यवाद। –
टाइपो फिक्स्ड। धन्यवाद नेली 27281। –