कई vlookups का रिटर्न योग


2

ठीक है, इसलिए मेरे पास एक मुद्दा है जिसे मैं सभी को एक सूत्र में हल करने की कोशिश कर रहा हूं।

मेरे पास तालिकाओं का एक सेटअप है:

my table

कितने NFPI (फलों की संख्या प्रतिशत तीव्रता) मैं सेब के लिए है?

मुझे तालिका 1 के कॉलम बी के खिलाफ तालिका 3 के कॉलम जी को स्कैन करने की आवश्यकता है, यह देखने के लिए कि कौन सी पंक्तियों में एक प्रकार का Apple है।

तब मुझे Apple की प्रत्येक घटना के लिए कुल फलों की संख्या ज्ञात करने की आवश्यकता है:

(Number of trees * Tree fruit) + ground fruit

और उचित प्रतिशत तीव्रता पर तालिका 2 में फल की कुल संख्या का पता लगाएं और सभी घटनाओं को जोड़ दें

तो ऐसा लगेगा:

(1 * 3) + 2 = 5 Red Apples. NFPI of 5 fruits at 97% intensity = 1.67  
(2 * 2) + 0 = 4 Green Apples. NFPI of 4 fruits at 98% intensity = 2  
(1 * 2) + 1 = 3 Yellow Apples. NFPI of 3 fruits at 97% intensity = 1  
**total NFPI = (1.67 + 2 + 1) = 4.67**

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

{=SUM(IF(ISERROR(MATCH(G12:G16,B3:B5,0))=FALSE,VLOOKUP(H12:H16,F4:K8,(I12:I16*J12:J16)+K12:K16+1),0))}

मैं यह पता नहीं लगा सकता कि यह काम क्यों नहीं करता है या इसे काम करने का तरीका नहीं है। मैंने सोचा कि शायद एक SUMPRODUCT सूत्र मदद कर सकता है, लेकिन मैं यह पता नहीं लगा सका। मुझे पता है कि मैं सिर्फ प्रत्येक सेब प्रविष्टि का एनएफपीआई पा सकता हूं और इसे अगले कॉलम में दर्ज कर सकता हूं Ground Fruit स्तंभ और फिर बस इसे जोड़ने के लिए इसके तल पर एक SUM सूत्र रखें, लेकिन यदि संभव हो तो मैं योग को करने की कोशिश कर रहा हूं।

किसी भी सहायता की सराहना की जाएगी!


सीन, मुझे अंत में यह उस तरह से काम करने के लिए मिला जैसा आप चाहते थे। नीचे मेरा संपादित पहला उत्तर देखें।
Bandersnatch

जवाबों:


1

संपादित करें: @ScottCraner के हालिया उत्तर ने "de-संदर्भित" का उपयोग किया INDEX() सूत्र और उनके जवाब ने मुझे इस समस्या पर एक और दरार लेने का फैसला किया। मेरे पास एक ही दृष्टिकोण (असफल) की कोशिश की थी इससे पहले कि दूसरी बार पूरी तरह से काम किया। मैं नीचे दिए गए समाधान का वर्णन करूँगा।

De-संदर्भित INDEX () सूत्र के बारे में पृष्ठभूमि:

शॉन, आपने सरणी सूत्रों का उपयोग करने के लिए एक सराहनीय प्रयास किया है जो आपको करने की आवश्यकता है। आपके द्वारा एक्सेल को हैंडल करने के तरीके से संबंधित समस्याएं हैं। कुछ सूत्र सरणियों को तर्क के रूप में उपयोग कर सकते हैं और कुछ में नहीं।

मैंने इसमें कुछ खुदाई की और मैंने एक्सेल में सरणियों का उपयोग करने के बारे में कुछ बहुत ही विचित्र, रहस्यमय बातें सीखीं INDEX() वह सूत्र जो मुझे पहले नहीं पता था। यह समझने के लिए कि यह सूत्र कैसे काम करता है, चलो अंत में शुरू करते हैं।

अंतिम सूत्र जो आपका सूत्र करेगा वह 2D सारणी से आपके तालिका 2 के तीन (बंद) मान है।

INDEX(array,row_num,col_num) एक 2 डी सरणी से एक भी मान वापस कर सकते हैं, और यह एक संपूर्ण स्तंभ या पंक्ति भी लौटा सकता है। ऐसा लगता है चाहिए मूल्यों की एक सूची वापस करने में सक्षम होने के लिए। तो चलिए इसे टेस्ट करते हैं।

यह सूत्र (एक संपूर्ण दुनिया में) वह राशि लौटाएगा जिसे आप तालिका 2 से देख रहे हैं:

=SUM(INDEX(G4:K8,{3,2,3},{5,4,3}))

पंक्ति 3, कॉलम 5 प्लस पंक्ति 2, कॉलम 4 प्लस पंक्ति 3, कॉलम 3 से तत्वों को जोड़ना चाहिए यह नहीं है , यह सिर्फ 1.67 देता है जो संदर्भित पहला तत्व है।

ऑनलाइन खोज करने से संदर्भ उत्पन्न होते हैं (एक सहित) StackOverflow पर यहाँ ) ये कहा INDEX() एक सरणी लौटाएगा, लेकिन केवल अगर आप de-संदर्भ सूत्र (यह "विचित्र" भाग है)। "पुरालेख" भाग ऐसा करने का तरीका है। यह "डी-संदर्भित" सूत्र है:

=SUM(INDEX(G4:K8,N(IF(1,{3,2,3})),N(IF(1,{5,4,3}))))

यह सूत्र सही उत्तर देता है: 4.67।

सूत्र में, IF() 1 के रूप में व्यवहार करता है True, इसलिए यह संख्याओं की सरणी, और N() यदि वे संख्याएँ हैं, तो संख्याओं का सरणी लौटाता है, जो वे हैं। सूत्र को सही ढंग से बनाने के लिए IF () और N () की आवश्यकता क्यों है, किसी का अनुमान नहीं है। में स्कॉट का सूत्र , उसे 1 से अपनी सरणी (यह एक सीमा संदर्भ थी) भी गुणा करना पड़ा।

लेकिन, अब हमारे पास एक सूत्र है जो सही उत्तर देता है। और उम्मीद है, हम सभी को करना है सरणी स्थिरांक को आपके अन्य डेटा का उपयोग करके गणना की गई सरणियों से बदलना है।

नई जानकारी यहां से शुरू होती है।

उपर्युक्त सूत्र में row_num के लिए {3,2,3}, हमें चुने हुए फलों की किस्मों से जुड़े F4: F8 में प्रतिशत तीव्रता के पदों की आवश्यकता है। सबसे पहले, हम सेब के पदों की एक सरणी प्राप्त करेंगे G12:G16 अपनी तालिका 3:

=MATCH(B3:B5,G12:G16,0)

यह एक सरणी सूत्र है और इसके साथ दर्ज किया जाना चाहिए CTRL खिसक जाना दर्ज बल्कि सिर्फ दर्ज

यह सूत्र तालिका 3 के कॉलम G में तालिका 1 से Apple किस्मों की सूची को देखता है और उनके पदों की एक सरणी देता है।

यदि आप सूत्र पट्टी में सूत्र का चयन करते हैं और F9 को हिट करते हैं, तो आप देखेंगे मूल्य सूत्र सरणी है {1,3,4}तालिका 3 के कॉलम G में सेब की स्थिति।

अब हमें उन पदों से जुड़े पीआई की आवश्यकता है। इस INDEX() सूत्र कॉलम H में दिखता है और उपर्युक्त सरणी को row_num के रूप में उपयोग करता है। यहाँ, row_num को "de-संदर्भित" होना चाहिए:

=INDEX(H12:H16,N(IF(1,MATCH(B3:B5,G12:G16,0))))

यह सूत्र सरणी देता है {0.97,0.98,0.97}सेब के PI के। अब तक सब ठीक है। अगला हम उस सरणी का उपयोग लुकअप मानों के रूप में करते हैं MATCH() सूत्र जो F4 में दिखता है: F8, आपकी तालिका 2 का PI इंडेक्स:

=MATCH(INDEX(H12:H16,N(IF(1,MATCH(B3:B5,G12:G16,0)))),F4:F8,0)

यह सूत्र सरणी देता है {3,2,3}, और वे अंतिम सूत्र के लिए जरूरी row_num हैं।

अगला हमें col_num की आवश्यकता है {5,4,3}, जो कि Apple किस्मों में से प्रत्येक के लिए फलों की कुल संख्या है। हम इसे तालिका 3 से प्राप्त करेंगे, लेकिन पहले हमें सभी फलों की किस्मों के लिए फलों की कुल संख्या की गणना करने की आवश्यकता है। यह (गणना) सरणी उन योगों की एक सूची है:

(I12:I16*J12:J16)+K12:K16

Apple किस्मों के लिए कुल फल प्राप्त करने के लिए, हम उस सरणी का उपयोग करेंगे a INDEX(), समान (डी-संदर्भित) row_num पहले की तरह:

=INDEX((I12:I16*J12:J16)+K12:K16,N(IF(1,MATCH(B3:B5,G12:G16,0))))

यह सूत्र सरणी देता है {5,4,3}, और वे अंतिम फॉर्मूले के लिए आवश्यक col_num हैं।

यह सब एक साथ रखकर, NFPI की सूची है:

=INDEX(G4:K8,MATCH(INDEX(H12:H16,N(IF(1,MATCH(B3:B5,G12:G16,0)))),F4:F8,0),INDEX((I12:I16*J12:J16)+K12:K16,N(IF(1,MATCH(B3:B5,G12:G16,0))))

यह सूत्र सरणी देता है {1.67;2;1}। वे सेब के लिए NFPI हैं, और अब हमें बस उन्हें जोड़ना है।

लेकिन अभी तक नहीं, पहले की देखभाल करने के लिए एक छोटी सी समस्या है। ऐप्पल की तीनों किस्में तालिका 3 में पाई जा सकती हैं, लेकिन ऑरेंज के लिए यह सच नहीं है। ऊपर दिए गए फॉर्मूले के साथ वापसी होती है #N/A उनमें जहाँ छोटे ऑरेंज किस्म नहीं पाए जा सकते हैं। यह किसी भी समस्या का कारण नहीं बनता है जब तक कि यह मूल्यों को जोड़ने का समय नहीं आता है।

इसलिए राशि लेने से पहले, हम रूपांतरण करते हैं #N/A's के साथ 0 ए IFERROR() सूत्र। यहाँ अंतिम सूत्र है:

=SUM(IFERROR(INDEX(G4:K8,MATCH(INDEX(H12:H16,N(IF(1,MATCH(C3:C5,G12:G16,0)))),F4:F8,0),INDEX((I12:I16*J12:J16)+K12:K16,N(IF(1,MATCH(C3:C5,G12:G16,0))))),0))

यह सूत्र सेब के लिए 4.67 और संतरे के लिए 5.75 देता है।

शॉन, मुझे उम्मीद है कि यह अभी भी उपयोगी हो सकता है। लंबी देरी के लिए क्षमा करें।


वाह, बहुत बहुत धन्यवाद। यह वाकई दिलचस्प है। मुझे पूरी तरह से समझ नहीं आया कि "डी-रेफ़रेंसिंग" और "आर्कैन" सामान उस फॉर्मूले में कैसे काम करता है, लेकिन यह वास्तव में आपके जैसा काम करता है। मैं वास्तव में अब तक की मदद की सराहना करता हूं। आपसे फिर से सुनने की उम्मीद है!
Sean

आपका स्वागत है। सूत्र है बहुत अजीब है। द IF () 1 को ट्रू मानता है, इसलिए यह संख्याओं की सरणी देता है, और N () संख्याओं की सरणी देता है यदि वे संख्याएँ हैं, जो कि वे हैं। ऐसा क्यों होता है कुछ भी सब पर, (लेकिन सूत्र को सही ढंग से काम करता है) मेरे से परे है।
Bandersnatch

स्पष्टीकरण के लिए धन्यवाद। मुझे पता नहीं था कि टी () और एन () फॉर्मूले भी मौजूद हैं; मुझे उन्हें ऊपर देखना था। वे एक्सेल के शुरुआती दिनों से कुछ मूल सूत्र जैसे लगते हैं।
Sean

एक और सवाल: मुझे समझ में आया कि आपके द्वारा दिए गए व्यू से आपको प्राप्त सरणी वापस आ जाती है, लेकिन एक्सेल में प्रदर्शित करने के लिए आपको दिए गए सरणी कैसे मिलते हैं? मैं कभी भी #VALUE हूँ! त्रुटियों। मुझे लगता है कि क्योंकि एक सेल केवल एक मूल्य प्रदर्शित कर सकता है। क्या लौटे हुए सरणी को पाठ में बदलने का कोई तरीका है और फिर यह प्रदर्शित करें कि सेल में सूत्र कहाँ है? ज्यादातर भविष्य के संदर्भ के लिए यह पूछना जब मैं एक और मुश्किल मुद्दे में भाग लेता हूं, तो मैं यह पता लगाने की कोशिश कर रहा हूं।
Sean

आप CTRL-Shift-Enter के साथ सरणी सूत्र दर्ज करना जानते हैं, ठीक है? अक्सर, यह #VALUE त्रुटि को साफ़ कर देगा। लौटाए गए पूरे सरणी को देखने के लिए, सूत्र पट्टी में क्लिक करें और उस सूत्र (या सूत्र के भाग) पर प्रकाश डालें, जिसके लिए आप परिणाम देखना चाहते हैं। हिट F9, और एक्सेल दिखाता है मूल्य आपने क्या उजागर किया। CTRL-Z को बाद में हिट करना सुनिश्चित करें, या एक्सेल परिणाम के साथ आपके सूत्र को बदल देता है। :-)
Bandersnatch

1

संपादित करें इस पृष्ठ पर मेरे अन्य उत्तर देखें। परिणाम यह निकला INDEX() किसी सरणी से (बंद) मानों की सूची लौटा सकते हैं।

यहाँ एक और तरीका है कि आप जो करने की कोशिश कर रहे हैं, उसे पूरा करने का एक तरीका है, हालाँकि यह फॉर्मूला निकला है बहुत लंबा।

निम्न सूत्र आपकी तालिका 2 में तीन NFPI में से प्रत्येक को देखता है और उन्हें एक साथ जोड़ता है।

=INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0)),G$3:K$3,0))+INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B4,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B4,G$12:G$16,0)),G$3:K$3,0))+INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B5,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B5,G$12:G$16,0)),G$3:K$3,0))

यह काम किस प्रकार करता है: योग में प्रत्येक पद एक है INDEX() फ़ंक्शन जो पंक्ति 2 से एक तत्व देता है पंक्ति_म और कॉलम_नम निर्दिष्ट करके। पहले शब्द के लिए, row_num को पहले, एक का उपयोग करके पाया जाता है INDEX() कि लग रहा है B3 (लाल Apple) तालिका 3 में और संबंधित% तीव्रता लौटाता है:

INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0))

फिर इस PI का उपयोग किया जाता है MATCH() तालिका 2 की सही पंक्ति लौटाने के लिए:

MATCH(INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0)),F$4:F$8,0)

कॉलम_नम पहले फल की सही संख्या का पता लगाकर पाया जाता है। मैंने आपकी तालिका 3 में एक अतिरिक्त कॉलम जोड़ा है जिसमें फलों की कुल संख्या की गणना की गई है L12:L16। यदि वह विकल्प नहीं है, तो आप प्रतिस्थापित करके "मक्खी पर" फल की संख्या की गणना कर सकते हैं L$12:L$16 साथ में (I$12:I$16)*(J$12:J$16)+(K$12:K$16):

INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0))

Row_num के लिए के रूप में, यह एक में प्रयोग किया जाता है MATCH() तालिका 2 की सही पंक्ति लौटाने के लिए:

MATCH(INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0)),G$3:K$3,0)

अब जब पंक्ति और स्तंभ Red Apple के लिए जाने जाते हैं, तो योग में पहला शब्द है:

=INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0)),G$3:K$3,0))

ग्रीन ऐप्पल और येलो ऐप्पल के लिए शेष दो शब्द समान सूत्र हैं, लेकिन साथ B4 तथा B5 जगह B3

मुझे उम्मीद है कि यह मदद करता है और शुभकामनाएं देता है।


मैं मदद करने वाले की सराहना करता हूं। मैं हर समय इस तरह के बहुत लंबे फॉर्मूले बनाता हूं, इसलिए मुझे लगा कि आपने इसे कैसे किया। ऊपर दिए गए मेरे मूल प्रश्न और छवि को समझने में आसानी के लिए कुछ आविष्कार किए गए डेटा थे। मेरे द्वारा उपयोग किए जा रहे वास्तविक डेटा के साथ, तालिका 1 के बराबर में 30+ प्रविष्टियाँ हैं। इसलिए मुझे लगता है कि यह समाधान, जबकि यह काम करता है, अत्यधिक हो सकता है अगर इसमें 30+ INDEX फ़ंक्शन शामिल हों। ऐसा प्रतीत होता है कि संदर्भ के रूप में तालिका 1 की संपूर्णता का उपयोग करना संभव नहीं है और वर्कअराउंड प्रत्येक प्रविष्टि (बी 3, बी 4, बी 5 का उपयोग करने के बजाय किया गया है)।
Sean

लेकिन मैंने आपके उत्तर को प्रश्न के समाधान के रूप में वोट दिया क्योंकि यह तकनीकी रूप से मेरे मूल प्रश्न के डेटा का समाधान है। चीयर्स!
Sean

-2

ओपी और नमूना फॉर्मूला द्वारा दी गई जानकारी के आधार पर, मुझे फलों के नाम, कुल फलों और एनएफपीआई निकालने का एक समाधान मिला है।

enter image description here

फल प्रकार निकालने के लिए सेल A12 में सूत्र:

=IFERROR(VLOOKUP(A2,$D$2:$H$6,1,0),"")

सेब की तालिका बनाने के लिए D12 में सूत्र:

{=VLOOKUP(A2,$D$2:$H$6,{1,2,3,4,5},FALSE)}

ध्यान दें: के साथ सूत्र समाप्त करें दर्ज फिर फॉर्मूला को कॉलम H तक खींचें और दबाएं F2 इसके बाद इस फॉर्मूला को समाप्त करें Ctrl + Shift + Enter इसके बाद इसे नीचे खींचें। आपको अन्य मूल्यों के साथ सेब की तालिका मिलती है।

कुल फल मान ज्ञात करने के लिए सेल B12 में फॉर्मूला (जैसा कि ओपी ने नमूना फॉर्मूला सुझाया है):

`=IF(VLOOKUP(A2,$D$2:$H$6,1,0)=$D12,((F12*G12)+H12),0)`

सेल C12 में NFPI फॉर्मूला के लिए:

=(E12*IF(VLOOKUP(A2,$D$2:$H$6,1,0)=$D12,((F12*G12)+H12),0))

ध्यान दें: यह एक अस्थायी फॉर्मूला है जिसे मैंने ओपी में मिली जानकारी के आधार पर बनाया है। ( यदि आप मुझे दिखाते हैं कि आपने 1.67 कैसे पाया तो मैं समीकरण को बदल देता हूं )।

मेरा मानना ​​है कि यह आपकी मदद करता है।


हाय राजेश, मुझे यकीन नहीं है कि यह कैसे काम करता है। मैं यह नहीं देखता कि यह प्रतिशत तीव्रता का उपयोग कैसे करता है - फलों की संख्या (मेरी तस्वीर से तालिका 2) जैसे मैं चाहता हूं।
Sean

@ सीन ,, मैंने 2 मुद्दों को हल किया है। 1. फलों का नाम निकालें और 2. फलों का कुल (जैसा कि आपने दिखाया, (1 * 3) + 2 = 5)। वास्तव में आप कैसे गणना कर रहे हैं, 5 फलों का एनएफपीआई = 1.67 ,,, इस बारे में मैं थोड़ा भ्रमित हूं। यदि आप मुझे समीकरण दिखाते हैं, तो मैं सुझाव दूंगा कि फॉर्मूला कैसे प्राप्त करें 5 और फिर 1.67 एक साथ। लेकिन मुझे सभी 3 व्यायाम के लिए याद दिलाना संभव नहीं है !! - राजेश एस 37 मिनट पहले
Rajesh S

@ सीन, चेक, मैंने अपना उत्तर संपादित कर दिया है, जो एनएफपीआई की गणना भी कर रहा है। फिर से मैं आपको याद दिलाना चाहूंगा, एनएफपीआई के बारे में अभी भी मैं भ्रमित हूं कि 1.67 कैसे प्राप्त करें, अगर आप मुझे समीकरण दिखाते हैं तो मैं अपने फॉर्मूला को बदल सकता हूं।
Rajesh S

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