एक्सेल में कई कॉलम के अनूठे संयोजन की मात्रा की गणना करें


1

मेरे पास एक स्प्रेडशीट में दो कॉलम हैं, और मुझे यह निर्धारित करने के लिए एक सूत्र लिखने की आवश्यकता है कि प्रत्येक संयोजन कितनी बार दिखाता है। उदाहरण:

A  1
A  1
A  2
A  2
A  2
B  1
B  1
B  2

परिणाम में होना चाहिए:

A  1  2
A  2  3
B  1  2
B  2  1

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


उदाहरण डेटा के पहले सेट में डेटा होना चाहिए 3 कहीं? कहां गया 3 परिणामों में से आए?
Brad

इसके अतिरिक्त आप पूछ सकते हैं कि क्या आप पा सकते हैं how many times each combination shows up लेकिन उदाहरण के परिणाम सभी परिणाम दिखाते हैं। क्या आप उन संयोजनों को देखना चाहते हैं, जो आप सभी संभावित संयोजनों का प्रतिनिधित्व करना चाहते हैं?
Brad

@ ब्रैड - 3 क्योंकि संयोजन है A 2 तीन बार दिखाता है।
SaintWacko

जवाबों:


4

संपादित करें: सरल समाधान (क्रेडिट सेंटवैक को जाता है)

दो कॉलम को समेटें:

=$A2&$B2

'रो लेबल' और 'वैल्यू' के रूप में कॉन्टेनेटेड कॉलम का उपयोग करके एक पिवट टेबल बनाएं। फिर सुनिश्चित करें कि 'मान' गणना (डिफ़ॉल्ट होना चाहिए) की गणना कर रहा है।

जटिल समाधान

आप कॉलम C में दो कॉलम समाप्‍त कर सकते हैं:

=$A2&$B2

कॉलम डी में, आपको एक फ़ंक्शन की आवश्यकता होगी जो यह निर्धारित करता है कि आइटम किसी अन्य आइटम का डुप्लिकेट है ताकि मूल्य प्रत्येक आइटम में से केवल एक के लिए सही हो (यह केवल तभी काम करता है यदि आइटम डेटा कॉलम द्वारा सॉर्ट किए जाते हैं, लेकिन मैक्रो बाद में ऐसा करता है)।

=$C1<>$C2

यदि स्तंभ E में मिलान किया गया है तो गणना की गणना करें:

=COUNTIF($C:$C,$C2)

एक मैक्रो आपके लिए सभी संयोजनों को ढूंढ लेगा, उन्हें शीट 2 पर रखें और गिनती की प्रतिलिपि बनाएँ। नीचे दिए गए कोड से कुछ धारणाएं बनती हैं, लेकिन आप इसे संशोधित कर सकते हैं कि आपको क्या चाहिए।

Option Explicit

Sub GetCombinations()

    Dim sheet1, sheet2 As Worksheet
    Set sheet1 = Worksheets(1)
    Set sheet2 = Worksheets(2)

    Dim sStartColumn As String
    Dim iTopRow As Long
    Dim sEndColumn As String
    Dim iBottomRow As Long

    sStartColumn = "A"
    iTopRow = 1
    sEndColumn = "E"
    iBottomRow = sheet1.UsedRange.Rows.Count

    Dim Rng As Range
    Dim sRange1 As String
    sRange1 = sStartColumn & CStr(iTopRow) & ":" & sEndColumn & CStr(iBottomRow)

    Set Rng = sheet1.Range(sRange1)

    Rng.Sort Key1:=Range("A2"), Order1:=xlAscending, _
             Key2:=Range("B2"), Order2:=xlAscending, _
             Orientation:=xlSortColumns, Header:=xlYes

    Dim i, j As Integer

    j = 2

    For i = 2 To iBottomRow

        If sheet1.Cells(i, 4) Then

            sheet2.Cells(j, 1) = sheet1.Cells(i, 1)
            sheet2.Cells(j, 2) = sheet1.Cells(i, 2)
            sheet2.Cells(j, 3) = sheet1.Cells(i, 5)
            j = j + 1

        End If

    Next i

End Sub

इससे हो जाना चाहिए।


मैं इसे करने के लिए एक मैक्रो के साथ खुश रहूंगा। मैं हर संयोजन की सूची नहीं दे सकता, हालांकि। ए, बी, 1, 2, केवल एक बहुत ही सरल उदाहरण था। यह वास्तव में ज़िप कोड और वाहक मार्गों का संयोजन है।
SaintWacko

ठीक है ... थोड़ा मुझे दे दो। मैं अपना उत्तर संपादित करूँगा
gregsdennis

हालाँकि, आप उस सहमति के साथ कुछ कर सकते हैं। मैं एक कॉलम के लिए प्रत्येक अद्वितीय मान की मात्रा को गिन सकता हूं। तब एकमात्र समस्या प्रत्येक अद्वितीय मान के लिए केवल एक प्रविष्टि का चयन कर रही है।
SaintWacko

आपको सभी संयोजनों की सूची की आवश्यकता क्यों है? क्यों नहीं बस खोज के लिए कितनी बार प्रत्येक संयोजन दिखाई देता है?
soandos

स्प्रेडशीट में एक और शीट कुछ प्रकार के टैग बनाती है जो कि शिपिंग में मुद्रित और उपयोग किए जाते हैं। मैं सटीक विवरण नहीं जानता, किसी और ने कोड लिखा है जो टैग उत्पन्न करता है। मुझे बस तीन कॉलमों के साथ एक शीट की आपूर्ति करने में सक्षम होने की आवश्यकता है: ज़िप कोड, कैरियर मार्ग, और दो के प्रत्येक संयोजन की मात्रा।
SaintWacko
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.