Excel Problem
Geizhals » Forum » Programmierung » Excel Problem (10 Beiträge, 269 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: Excel Problem
16.02.2013, 13:13:29
Hi,
ich hab dir mal kurz (quick & dirty) ein Makro zusammen geschrieben:


############################################

Option Explicit

Private Sub countGroups()
Dim iRow As Integer
Dim iLastRow As Integer
Dim iOutputRowGroupCount As Integer
Dim iOutputRowsDistinctValues As Integer
Dim iCurrentRowDistinctValues As Integer
Dim iGroupCounter As Integer
Dim iArrayCounter As Integer

Dim sCurrentValue As String
Dim sPreviousValue As String

Dim bValueFound As Boolean

    iOutputRowGroupCount = 1
    iLastRow = UsedRange.SpecialCells(xlCellTypeLastCell).Row
    
    For iRow = 1 To iLastRow + 1
        sCurrentValue = Cells(iRow, 1).Value
        
        If sCurrentValue = sPreviousValue Then
            iGroupCounter = iGroupCounter + 1
        Else
            If iRow > 1 Then
                Cells(iOutputRowGroupCount, 2).Value = iGroupCounter & " x " & sPreviousValue
                iOutputRowGroupCount = iOutputRowGroupCount + 1
                
                bValueFound = False
                For iCurrentRowDistinctValues = 1 To iOutputRowsDistinctValues
                    If Cells(iCurrentRowDistinctValues, 3).Value = sPreviousValue Then
                        Cells(iCurrentRowDistinctValues, 4).Value = Cells(iCurrentRowDistinctValues, 4).Value + 1
                        Cells(iCurrentRowDistinctValues, 5).Value = Cells(iCurrentRowDistinctValues, 5).Value + iGroupCounter
                        bValueFound = True
                    End If
                Next iCurrentRowDistinctValues
                
                If Not bValueFound Then
                    iOutputRowsDistinctValues = iOutputRowsDistinctValues + 1
                    Cells(iOutputRowsDistinctValues, 3).Value = sPreviousValue
                    Cells(iOutputRowsDistinctValues, 4).Value = 1
                    Cells(iOutputRowsDistinctValues, 5).Value = iGroupCounter
                End If
            End If
            iGroupCounter = 1
        End If
        
        sPreviousValue = sCurrentValue
    Next iRow
    
    For iCurrentRowDistinctValues = 1 To iOutputRowsDistinctValues
        Cells(iCurrentRowDistinctValues, 6).Value = Cells(iCurrentRowDistinctValues, 5).Value / Cells(iCurrentRowDistinctValues, 4).Value
    Next iCurrentRowDistinctValues
End Sub


############################################

In Spalte A müssen die Werte stehen, Ausgabe erfolgt in der folgenden Reihenfolge:
Spalte B: Vorkommen pro Gruppe (2 x 1, 3 x 2, ...)
Spalten C - E sind eigentlich nur der Einfachheit halber ausgegeben. Spalte C: Wert, Spalte D: Anzahl der Gruppen, Spalte E: Vorkommen gesamt
Spalte D: durchschnittliche Gruppengröße (berechnet sich aus Spalte D durch Spalte E, Wert steht in Spalte C)

Das ganze kommt wahrscheinlich ein wenig konfus rüber, aber ich habs grade schon sehr eilig. Falls du noch Fragen oder Wünsche hast, schreib einfach. Ich schau am Nachmittag wieder rein.

Grüße
Karli

16.02.2013, 13:14 Uhr - Editiert von KarliKarli, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung