sql एक्सेल में कोई सहकर्मी जैसी कार्य है?




excel xls (4)

एक कदम आगे वीबीए दृष्टिकोण लेते हुए, मैंने इसे अलग-अलग कोशिकाओं और सेल श्रेणियों दोनों के संयोजन (या तो) के संयोजन की अनुमति देने के लिए फिर से लिखा है:

Public Function Coalesce(ParamArray Cells() As Variant) As Variant

    Dim Cell As Variant
    Dim SubCell As Variant

    For Each Cell In Cells
        If VarType(Cell) > vbArray Then
            For Each SubCell In Cell
                If VarType(SubCell) <> vbEmpty Then
                    Coalesce = SubCell
                    Exit Function
                End If
            Next
        Else
            If VarType(Cell) <> vbEmpty Then
                Coalesce = Cell
                Exit Function
            End If
        End If
    Next
    Coalesce = ""

End Function

तो अब Excel में आप ए 1 में निम्न में से किसी भी सूत्र का उपयोग कर सकते हैं:

=Coalesce(B1, C1, D1)
=Coalesce(B1, C1:D1)
=Coalesce(B1:C1, D1)
=Coalesce(B1:D1)

मुझे एक ही पंक्ति में कॉलम (बाएं से दाएं) में पहले गैर-खाली प्रविष्टि के साथ एक सेल भरना होगा - SQL में coalesce () के समान।

निम्नलिखित उदाहरण पत्र में

---------------------------------------
|     |  A   |   B   |   C   |    D   |
---------------------------------------
|  1  |      |   x   |   y   |    z   |
---------------------------------------
|  2  |      |       |   y   |        |
---------------------------------------
|  3  |      |       |       |    z   |
---------------------------------------

मैं पंक्ति ए के प्रत्येक कक्ष में एक सेल फ़ंक्शन रखना चाहता हूं जैसे कि मुझे मिलेगा:

---------------------------------------
|     |  A   |   B   |   C   |    D   |
---------------------------------------
|  1  |  x   |   x   |   y   |    z   |
---------------------------------------
|  2  |  y   |       |   y   |        |
---------------------------------------
|  3  |  z   |       |       |    z   |
---------------------------------------

मुझे पता है कि मैं इसे आईएफ कार्यों के एक कैस्केड के साथ कर सकता हूं, लेकिन मेरी असली शीट में, मेरे पास 30 कॉलम चुनने हैं, इसलिए यदि कोई आसान तरीका होता तो मैं खुश रहूंगा।


सरणी के अंदर वेरिएबल दर्ज करें जिन्हें अनुमति नहीं है।

Function Coalesce(ParamArray Fields() As Variant) As Variant

    Dim v As Variant

    For Each v In Fields
        If IsError(Application.Match(v, Array("", " ", 0), False)) Then
            Coalesce = v
            Exit Function
        End If
    Next
    Coalesce = ""

End Function

या यदि आप अलग-अलग कोशिकाओं की तुलना करना चाहते हैं, तो आप वीबीए में कोलेसे फ़ंक्शन बना सकते हैं:

Public Function Coalesce(ParamArray Fields() As Variant) As Variant

    Dim v As Variant

    For Each v In Fields
        If "" & v <> "" Then
            Coalesce = v
            Exit Function
        End If
    Next
    Coalesce = ""

End Function

और फिर इसे एक्सेल में कॉल करें। आपके उदाहरण में ए 1 में सूत्र होगा:

=Coalesce(B1, C1, D1)

=INDEX(B2:D2,MATCH(FALSE,ISBLANK(B2:D2),FALSE))

यह एक ऐरे फॉर्मूला है। सूत्र दर्ज करने के बाद, Excel को एरे फॉर्मूला के रूप में मूल्यांकन करने के लिए CTRL + Shift + Enter दबाएं । यह कोशिकाओं की दी गई सीमा के पहले nonblank मूल्य देता है। आपके उदाहरण के लिए, शीर्षक "ए" के साथ कॉलम में सूत्र दर्ज किया गया है

    A   B   C   D
1   x   x   y   z
2   y       y   
3   z           z




coalesce