2011-08-19 8 views
9

मुझे एक समस्या है जो इतना आसान होनी चाहिए, लेकिन मुझे इसके चारों ओर अपना सिर नहीं मिल रहा है। मैं एक दुकान के लिए मुद्रित pricelists करते हैं और इस साल उन्होंने भाग संख्याओं को एक के बजाय 5 कार्यपत्रकों में विभाजित कर दिया है।संदर्भ एक्सेल वर्कशीट गतिशील रूप से

जब कोई उपयोगकर्ता pricetag मुद्रित करना चाहता है, तो वह = C10 में प्रवेश करती है, वर्कशीट "Pricelist" पर क्लिक करती है और उसे आवश्यक भाग संख्या में नेविगेट करती है।

C10 के लिए जिसके परिणामस्वरूप सूत्र है:! = Pricelist B40

E10 भाग संख्या के बारे में और अधिक जानकारी अवश्य होनी चाहिए ताकि E10 सूत्र है: = VLOOKUP (C10, Pricelist बी: एन, 2, FALSE)

हालांकि, अब नए कार्यपत्रक के साथ वह वर्कशीट "New_Items" का चयन हो सकता है जो मामले में C10 के लिए जिसके परिणामस्वरूप सूत्र है:! = New_Items B40

मैं E10 के लिए सूत्र कैसे लिख सकते हैं तो टी टोपी यह वही वर्कशीट का संदर्भ देता है जो सी 10 करता है।

मैं जरूरत E10 = VLOOKUP (C10, Pricelist बी: एन, 2, FALSE)

स्वचालित रूप से बनने के लिए * = VLOOKUP (C10, New_Items बी: एन, 2, FALSE) *

यह समझ में आता है? क्या एक्सेल को किसी अन्य सेल के संदर्भ के आधार पर वर्कशीट संदर्भ संशोधित करने योग्य है?

टीआईए!

उत्तर

12

हाँ आप INDIRECT का उपयोग करके ऐसा कर सकते हैं() यह थोड़ा सा काम ले सकता है क्योंकि आपको चादर के नाम को किसी भी तरह से काम करने की आवश्यकता है।

=VLOOKUP(C10, INDIRECT(Concatenate(cell-with-sheet-name, "!B:N"),TRUE) ,2,FALSE) 
+0

"सेल-इन-शीट-नाम" के लिए वास्तविक मान निर्धारित करने के लिए आपको अन्य कक्षों में अतिरिक्त स्ट्रिंग कॉन्सटेनेशन करने की आवश्यकता हो सकती है। यह आपकी सभी लुकअप वर्कशीट को यथासंभव समान बनाकर भी आसान बना दिया जा सकता है। – smaclell

+0

"... किसी भी तरह चादर के नाम को काम करने की ज़रूरत है।" हां, मुझे क्या करने की ज़रूरत है यह पता लगाने के लिए कि सी 10 से शीट-नाम निकालने का तरीका है और उसी शीट में E10 फॉर्मूला संदर्भ है। क्या मैं इसके साथ मेरी मदद कर सकता हूं? साथ ही, सभी वर्कशीट्स में डेटा समान रूप से संरचित है इसलिए एक बार जब मैं इस बाधा को दूर करता हूं तो मैं घर-मुक्त हूं। – Thinkwell

+0

यदि वीबीए सक्षम है तो एक साधारण फ़ंक्शन सेल का उपयोग कर सकता है। फर्मुला शीटनाम को पार्स कर देता है और इसे वापस कर देता है। यूडीएफ के http://www.ozgrid.com/VBA/ExcelIsFormula.htm पर क्विकस्टार्ट के लिए – Eddy

0

क्या आप वीबीए का उपयोग कर सकते हैं?

यदि हां, तो कोशिश इस सरल यूडीएफ

Function MyLookup(ref As Range, Offset as Long) As Variant 
    MyLookup = Range(ref.Formula).Offset(0, Offset) 
End Function 

सेल E10 =MyLookup(C10, 1)

0

आप VBA यूडीएफ

Function GetShtNm(rng As Range) As String 
    Application.Volatile 

    If InStr(1, rng.Formula, "!") = 0 Then 
     GetShtNm = vbNullString 
    Else 
     GetShtNm = Mid$(rng.Formula, 2, InStr(1, rng.Formula, "!") - 2) 
    End If 
End Function 

बनाने और उपयोग इस अप्रत्यक्ष एड़ी द्वारा प्रदान के साथ सूत्र है सकता है ।

यह यूडीएफ आपको VLOOKUP INDIRECT फ़ंक्शन के भीतर शीट नाम परिवर्तनों को गतिशील रूप से ट्रैक करने देगा।