excel - एक सेल में एकाधिक मापदंडों के मूल्यों को लौटाने के साथ वीएलयूक्यूपी



excel-vba vlookup (1)

यहाँ एक अलग दृष्टिकोण है

Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
    Dim d As Long
    Dim c As Long
    Dim arr2()
    Dim t As Long, y As Long
    t = -1
    y = -1
    If TypeName(arr) = "Range" Then
        arr2 = arr.Value
    Else
        arr2 = arr
    End If
    On Error Resume Next
    t = UBound(arr2, 2)
    y = UBound(arr2, 1)
    On Error GoTo 0

    If t >= 0 And y >= 0 Then
        For c = LBound(arr2, 1) To UBound(arr2, 1)
            For d = LBound(arr2, 1) To UBound(arr2, 2)
                If arr2(c, d) <> "" Or Not skipblank Then
                    TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
                End If
            Next d
        Next c
    Else
        For c = LBound(arr2) To UBound(arr2)
            If arr2(c) <> "" Or Not skipblank Then
                TEXTJOIN = TEXTJOIN & arr2(c) & delim
            End If
        Next c
    End If
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function

यह आपको यह निर्धारित करने की अनुमति देता है कि क्या आपके पास के रूप में सीमांकक हो सकता है , या केवल एक स्थान या कुछ भी हो जिसे आप रिटर्न मानों के बीच रखना चाहते हैं।

दूसरा मानदंड पूछता है कि क्या आप रिक्त स्थान के लिए रिक्त स्थान वापस करना चाहते हैं।

तीसरा आप IF () का एक सरणी प्रपत्र डाल देंगे जो मानदंड का उपयोग करता है जिसे आप रिटर्न मान फ़िल्टर करना चाहते हैं।

तो आप में उदाहरण आप सरणी रूप में इस का उपयोग करेंगे:

=TEXTJOIN(" ",TRUE,IF((A2:A7="A")*(B2:B7=2),C2:C7,""))

" " कहते हैं कि हम मूल्यों के बीच एक स्थान चाहते हैं।

TRUE मतलब है कि हम किसी भी रिक्त स्थान को छोड़ देते हैं, यह महत्वपूर्ण है जब हम फ़िल्टर द्वारा मूल्यों को उचित नहीं मानते हैं।

कॉलम के माध्यम से चक्र IF((A2:A7="A")*(B2:B7=2),C2:C7,"") चक्रों और दोनों बूलियन परीक्षणों के सही होने पर मान देता है, यदि यह रिक्त नहीं लौटाता है

होने के कारण और सरणी सूत्र को Ctrl-Shift-Enter के साथ प्रविष्ट होने के बजाय संपादन मोड के बाहर आने की पुष्टि होनी चाहिए। यदि सही तरीके से किया जाता है तो एक्सेल सूत्र के चारों ओर {} रखता है

यदि आप पूर्ण कॉलम को वापस करना चाहते थे तो आप इसका उपयोग कर सकते हैं:

=TEXTJOIN(" ",TRUE,C2:C7)

नियमित रूप से और यह एक सेल में 8 3 3 9 2 3 लौटाएगा।

ध्यान दें

यदि आपके पास Office 365 Excel TEXTJOIN एक सूत्र है जो मूल रूप से मौजूद है जो दोनों मामलों में ऊपर दर्ज किया गया है।

आप बस ऊपर वर्णित सूत्रों का उपयोग करेंगे और vba कोड का उपयोग नहीं करेंगे।

मुझे यह VBA मिला है जो मिलान करने के लिए एक मानदंड का उपयोग करके सभी मिलान मूल्यों को एक सेल में वापस करने में सक्षम है:

Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long)
'Update 20150310
Dim rng As Range
Dim xResult As String
xResult = ""
For Each rng In pWorkRng
    If rng = pValue Then
        xResult = xResult & " " & rng.Offset(0, pIndex - 1)
    End If
Next
MYVLOOKUP = xResult
End Function

लेकिन मुझे कई मिलान मानदंडों की तुलना में मूल्यों को वापस करने के लिए इस VLOOKUP की आवश्यकता है।

कोई भी विचार कैसे अपग्रेड किया जा सकता है?

धन्यवाद। नीचे अपडेट करें:

विवरण सारणी:

मुझे एक सेल में मूल्यों को वापस करने के लिए फार्मूला चाहिए जहां A1-1A और A.0002 मैचों में परिणाम 8 3 होना चाहिए