excel - शीर्ष पंक्ति कोशिकाओं को समाप्‍त करें यदि नीचे कॉलम में 1 है




if-statement concatenation (2)

मैं 1s और 0s के बड़े डेटाबेस को नामांकित कॉलम के साथ देख रहा हूँ, जैसे:

red    blue   green  orange purple
────── ────── ────── ────── ──────
0      0      1      0      1 
0      1      0      0      0 

मैं सभी शीर्षकों (पंक्ति द्वारा) को जोड़ना चाहता हूं, जहां पंक्ति में उस शीर्षक के नीचे "1" है। इसलिए आदर्श रूप से पहला "हरे, बैंगनी" के बराबर होगा और दूसरा सिर्फ "नीला" पढ़ेगा। मेरे पास बड़ी मात्रा में डेटा है इसलिए सौ "एनएफ" कार्यों के घोंसले के साथ कुछ भी मतलब नहीं है।

मैंने कोशिश की

= IF (B1: B5 = 1, CONCATENATE (A1: A5), "")

और कुछ चीजें इसके करीब हैं, लेकिन मुझे इसे पाने का कोई स्पष्ट तरीका नहीं मिल रहा है। मेरे पास VBA से निपटने के लिए वास्तव में समय या पर्याप्त ज्ञान नहीं है। मैं सभी मदद की सराहना करता हूं, धन्यवाद!


कुछ से अधिक कोशिकाओं पर स्ट्रिंग का संघटन एक VBA उपयोगकर्ता निर्धारित फ़ंक्शन (उर्फ UDF ) को मापदंड निर्धारित किए बिना भी छोड़ दिया जाता है। "सौ" यदि "कार्य" के घोंसले के शिकार की आपकी स्थिति निश्चित रूप से इस श्रेणी में डालती है।

Alt + F11 पर टैप करें और जब VBE खुलता है, तो immedaitely ule Module ( Alt + I , M ) सम्मिलित करने के लिए पुल-डाउन मेनू का उपयोग करें। नए फलक में निम्नलिखित को चिपकाएँ जैसे कि Book1 - Mod11 (कोड) शीर्षक से कुछ।

Public Function conditional_concat(rSTRs As Range, rCRITs As Range, Optional sDELIM As String = ", ")
    Dim c As Long, sTMP As String
    For c = 1 To Application.Min(rSTRs.Cells.Count, rCRITs.Cells.Count)
        If CBool(rCRITs(c).Value2) Then _
            sTMP = sTMP & rSTRs(c).Value & sDELIM
    Next c
    conditional_concat = Left(sTMP, Application.Max(Len(sTMP) - Len(sDELIM), 0))
End Function

अपनी वर्कशीट पर लौटने के लिए Alt + Q पर टैप करें। इस UDF का उपयोग किसी भी देशी एक्सेल वर्कशीट फ़ंक्शन की तरह करें। वाक्य रचना है,

conditional_concat(<range of strings>, <range of conditions>, [optional] <delimiter as string>)

G2 में सूत्र है,

=conditional_concat(A$1:E$1, A2:E2)

आवश्यकतानुसार भरें।


जिस तरह से मैं यह करूंगा वह पांच अतिरिक्त कॉलम जोड़ने और स्पष्ट रूप से 'रेड', 'ब्लू', 'ग्रीन', 'ऑरेंज', 'पर्पल' दर्ज करने के लिए होगा, जहां संबंधित कॉलम 1 है, इसलिए आप ऐसा कर सकते हैं:

लाल स्तंभ 'r': =IF(col_red=1,"red,","")

ब्लू कॉलम 'b': =IF(col_blue=1,"blue,","")

ग्रीन कॉलम 'g': =IF(col_green=1,"green,","")

नारंगी कॉलम 'o': =IF(col_orange=1,"orange,","")

बैंगनी कॉलम 'p': =IF(col_purple=1,"purple,","")

और दूसरे कॉलम में इन कॉलमों को संबंधित कॉलम =LEFT(F2 & G2 & H2 & I2 & J2,LEN(F2 & G2 & H2 & I2 & J2)-1) संबंधित कॉलम आदि के संदर्भ बदलें) =LEFT(F2 & G2 & H2 & I2 & J2,LEN(F2 & G2 & H2 & I2 & J2)-1) (मुझे कॉन्टेनेट मिला =LEFT(F2 & G2 & H2 & I2 & J2,LEN(F2 & G2 & H2 & I2 & J2)-1) त्रुटिपूर्ण पंक्तियों के कारण कार्य त्रुटिपूर्ण है

यह परिणाम देता है:

मैंने बिना किसी सफलता के एरे फ़ंक्शंस के साथ थोड़ा प्रयोग किया है जो इसे हल करने का एक तरीका हो सकता है।





concatenation