आपके प्रश्न की मेरी समझ के आधार पर, मैं निम्नलिखित 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