एक्सेल लुकअप फॉर्मूला दूसरी शीट पर


0

मेरे पास 2 वर्कशीट हैं। मैं आकार कोड के आधार पर नाममात्र लंबाई की गणना करने में सक्षम होना चाहता हूं जिसमें विभिन्न आकार कोड के लिए अलग-अलग सूत्र हैं। पैरामीटर नाममात्र लंबाई में हैं। कृपया स्पष्ट चित्र प्राप्त करने के लिए चित्र देखें।

नाममात्र लंबाई:

नाममात्र की लंबाई

सूत्र:

सूत्र


क्या आपके पास केवल ये 4 संयोजन A, A + B, A + B + C & A + B + C + D हैं या और भी हो सकते हैं क्योंकि मुझे G पर कॉलम दिखाई दे रहे हैं? यदि आपके पास इन 4 संयोजनों का एक ही संभव है, लेकिन कुछ असुविधाजनक है, तो इसका उपयोग पाठ सूत्र को वास्तविक सूत्र में मैप करने के लिए किया जा सकता है। क्या भविष्य में स्थितियां बदल सकती हैं जैसे कि यह बीसी या ए + बीडी बन सकता है, बुनियादी गणित ऑपरेटर के संयोजन? क्या आपकी आवश्यकता कुछ इस तरह की है जैसे अगर मैं कॉल टी में 14 कहता हूं, तो 14 के बाद से ए + सी कोल्स ई एंड जी को जोड़ना चाहिए और जी में वास्तविक परिणाम दिखाना चाहिए? यह संभव हो सकता है VBA मैक्रोज़ का उपयोग करना, यह भी निश्चित नहीं है कि क्या सूत्र आसानी से काम कर सकता है।
patkim

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

हाँ, लेकिन क्या आपको स्तंभ O में सूत्र परिणाम की आवश्यकता है? आपने अपनी उपरोक्त तस्वीर में 'नाममात्र की लंबाई' दिखाई है जैसे कि अगर मैं T3 में 11 कहता हूं, तो लुकअप टेबल में A + B के 11 नक्शे के बाद से संबंधित E3 और F3 कॉलम को जोड़ना चाहिए और आपको O3 में जोड़ दिखाना चाहिए। क्या यह है कि यह कैसे काम करना चाहिए। मैं कुछ VBA कोड के बारे में सोच सकता हूं जो ऐसा करता है। एक अलग xls फ़ाइल में या एक ही xls वर्कबुक के अंदर लुकअप टेबल है, लेकिन एक अलग वर्कशीट जैसे कि Sheet1 आपका डेटा है और Sheet2 उदाहरण के लिए उसी फ़ाइल नाम में आपकी लुकिंग टेबल है।
12

जवाबों:


1

आपके प्रश्न की मेरी समझ के आधार पर, मैं निम्नलिखित VBA आधारित समाधान का सुझाव दे रहा हूं।

मान लें - शीट 1 में एक्सेल कॉलम में डेटा टेबल है। थ्रू टी। टेबल कॉलम नाम ए थ्रू जी मैप में वास्तविक एक्सेल कॉलम ई थ्रू के। शीट 2 में सेल रेंज डी 4 थ्रू ई 12 में शेपकोड लुकअप टेबल है। गणना विकल्प स्वचालित पर सेट किए जाते हैं जो एक्सेल में डिफ़ॉल्ट सेटिंग है।

यहाँ छवि विवरण दर्ज करें Sheet1 में ALT + F11 दबाएँ। VBA कोड संपादक खुल जाएगा। सम्मिलित करें मेनू से एक मॉड्यूल सम्मिलित करें। मॉड्यूल 1 नाम का मॉड्यूल (यह मानते हुए कि कोई अन्य मॉड्यूल मौजूद नहीं है) डाला जाएगा और नाम बाएं फलक में दिखाई देगा। अधिकतर यह मॉड्यूल 1 के लिए कोड संपादक विंडो को भी खोलेगा, यदि नहीं, तो VBA कोड संपादक को खोलने के लिए मॉड्यूल 1 पर डबल क्लिक करें। यहां नीचे दिए गए कोड को पास्ट करें।

Function EvaluateExp(parm1 As String, parm2 As Long, parm3 As Long)

    ' parm1 is the VLOOKUP String
    ' parm2 is the row number
    ' parm3 is the column number of the first column in the table A thru G

    Application.Volatile
    Dim finalstring As String
    finalstring = ""

    For I = 1 To Len(parm1)
          If I Mod 2 = 0 Then          ' it's even position

                Select Case Mid(parm1, I, 1)

                ' Ensure only + opertor is allowed. In future add more Case statements
                ' below in case more math operators are applicable

                    Case "+"
                          finalstring = finalstring & Mid(parm1, I, 1)
                    Case Else
                          EvaluateExp = CVErr(xlErrValue)
                          Exit Function
                End Select

          Else                         ' it's odd position
              J = UCase(Mid(parm1, I, 1))

              ' Construct the expression from the actual columns mapping to A thru G
              ' In future if you insert more columns after G, add new Case statements here below

              Select Case J
                 Case "A"
                     finalstring = finalstring & Cells(parm2, parm3).Address
                 Case "B"
                     finalstring = finalstring & Cells(parm2, parm3 + 1).Address
                 Case "C"
                     finalstring = finalstring & Cells(parm2, parm3 + 2).Address
                 Case "D"
                     finalstring = finalstring & Cells(parm2, parm3 + 3).Address
                 Case "E"
                     finalstring = finalstring & Cells(parm2, parm3 + 4).Address
                 Case "F"
                     finalstring = finalstring & Cells(parm2, parm3 + 5).Address
                 Case "G"
                     finalstring = finalstring & Cells(parm2, parm3 + 6).Address
                 Case Else
                     EvaluateExp = CVErr(xlErrValue)
                     Exit Function
              End Select

           End If

     Next I

   EvaluateExp = Application.Caller.Worksheet.Evaluate(finalstring)

End Function

यह कोड एक मूल्यांकन फ़ंक्शन बनाता है जिसका नाम मूल्यांकन मूल्यांकन है जो 3 मापदंडों में लेता है। इनपुट स्ट्रिंग, पंक्ति संख्या और कॉलम संख्या। यह फ़ंक्शन क्रमशः तालिका कॉलम ए थ्रू जी से एक्सेल कॉलम ई थ्रू के को मैप करता है और अपेक्षित एक्सेल अभिव्यक्ति का निर्माण करता है, मूल्यांकन में लिपटे वास्तविक परिणाम देता है।

कक्ष 1 में शीट 1 में इस कस्टम फ़ंक्शन के आसपास निर्मित निम्नलिखित सूत्र दर्ज करें और फिर इसे तालिका की आवश्यक पंक्तियों के साथ नीचे खींचें।

=IF(ISBLANK(T3),"",EvaluateExp(VLOOKUP(T3,Sheet2!$D$4:$E$12,2,FALSE),ROW(),COLUMN(E3)))

जैसे ही आप कक्ष T3 और उससे नीचे आकार कोड दर्ज करते हैं, सूत्र लुकअप द्वारा दिए गए अभिव्यक्ति के अनुसार लागू कॉलम की अपेक्षित राशि देता है।

सूत्र #VALUE वापस आ जाएगा! निम्नलिखित स्थितियों में

लुकअप तालिका में लुकअप मान मौजूद नहीं है

• अभिव्यक्ति में ए थ्रू जी के अलावा अन्य कॉलम का जिक्र है

• लुकिंग टेबल में अपूर्ण / अमान्य अभिव्यक्ति जैसे ए + बी + या एबीसीडी या ए + बीसी

• एक्स + उदा एसी के अलावा गणित ऑपरेटर युक्त अभिव्यक्ति

सीमाएं

• फंक्शन मैप्स टेबल कॉलम, वास्तविक एक्सेल कॉलम ई के माध्यम से जी के माध्यम से के। भविष्य में यदि आप जी के बाद अधिक कॉलम सम्मिलित करते हैं तो आपको उसी को समायोजित करने के लिए कोड को अपडेट करना होगा।

यहाँ छवि विवरण दर्ज करें


अपडेट करें

उपयोगकर्ता परिभाषित फ़ंक्शन के लिए निम्न कोड किसी भी मान्य गणितीय अभिव्यक्ति का समर्थन करने के लिए पर्याप्त सामान्य है। अगर अभिव्यक्ति का मूल्यांकन नहीं किया जा सकता है तो यह #VALUE! त्रुटि। कोष्ठक शामिल न किए जाएं यह के रूप में दस्तावेज ऑपरेटर पूर्वता का पालन करना चाहिए यहां । सभी लागू ऑपरेटरों को अभिव्यक्ति में उल्लेख करें जैसे (2 * ए) + (3 * बी) और 2 ए + 3 बी नहीं।

Function EvaluateExp(parm1 As String, parm2 As Long, parm3 As Long)

    ' parm1 is the VLOOKUP String
    ' parm2 is the row number
    ' parm3 is the column number of the first column in the table A thru G

    Application.Volatile
    Dim finalstring As String
    finalstring = ""

    For I = 1 To Len(parm1)
        J = UCase(Mid(parm1, I, 1))
        Select Case J
             Case "A"
                  finalstring = finalstring & Cells(parm2, parm3).Address
             Case "B"
                  finalstring = finalstring & Cells(parm2, parm3 + 1).Address
             Case "C"
                  finalstring = finalstring & Cells(parm2, parm3 + 2).Address
             Case "D"
                  finalstring = finalstring & Cells(parm2, parm3 + 3).Address
             Case "E"
                  finalstring = finalstring & Cells(parm2, parm3 + 4).Address
             Case "F"
                  finalstring = finalstring & Cells(parm2, parm3 + 5).Address
             Case "G"
                  finalstring = finalstring & Cells(parm2, parm3 + 6).Address
             Case Else
                  finalstring = finalstring & J

        End Select

    Next I


   EvaluateExp = Application.Caller.Worksheet.Evaluate(finalstring)

End Function

महान। काम करने के लिए मिल गया। ढेर सारा धन्यवाद। मैं सिर्फ "+" अर्थात "*" और "-" के बजाय अतिरिक्त गणित संचालक कैसे जोड़ूं। धन्यवाद
निकोलस लिम

कोड में मेरी इनलाइन टिप्पणियां देखें। इसमें केस स्टेटमेंट है, केस मिड (parm1, I, 1) का चयन करें। पहला मूल्यांकन केस "+" के लिए है बस ऑपरेटर द्वारा मिलान के नीचे अधिक केस स्टेटमेंट जोड़ें। उदाहरण के लिए केस "-" और इसके नीचे अंतिम स्टेटमेंट = फाइनलस्ट्रीमिंग एंड मिड (parm1, I, 1)।
patkim

ठीक। मान लें कि सूत्र 2A + 0.5B है। क्या मैं सूत्र को (2 * ए) + (0.5 * बी) के रूप में रखता हूं। मैंने केस स्टेटमेंट "*" के लिए रखा है, लेकिन यह संख्या 2 या किसी अन्य संख्या को स्वीकार नहीं करता है।
निकोलस लिम

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