Thema Datum  Von Nutzer Rating
Antwort
25.09.2016 12:36:30 Jens
NotSolved
Blau Zählen mit Pivot
08.10.2016 20:35:43 BigBen
NotSolved

Ansicht des Beitrags:
Von:
BigBen
Datum:
08.10.2016 20:35:43
Views:
618
Rating: Antwort:
  Ja
Thema:
Zählen mit Pivot

Hallo,

falls noch keine Lösiung gefunden wurde, kann eventuell diese helfen:

Sub Counter(rngDataSource As Range, NameDestination As String)
    Dim Counter() As Variant
    ' Aufbau: 2. Dimensionen:
    ' 1. Dimension: Inhalt
    ' 2. Dimention: Zähler
    Dim rng As Range
    Dim rngNm As Range, rngNew As Range
    Dim Item As Variant
    Dim bHasData As Boolean
    Dim iPos As Integer
    For Each rng In rngDataSource.Cells
        For Each Item In Split(rng.Value, " ")
            Item = Trim(Item)
            If Not Right(Item, 1) = ":" Then
                CounterItem Counter, Item
                bHasData = True
            End If
        Next
    Next
    
    ' Counter sortieren
    
    SortArray Counter
    
    Set rngNm = ActiveWorkbook.Names(NameDestination).RefersToRange
    
    rngNm.Clear
    If bHasData Then
        For iPos = 0 To UBound(Counter, 2)
            rngNm(iPos + 1, 1) = Counter(0, iPos)
            rngNm(iPos + 1, 2) = Counter(1, iPos)
            'iRow = iRow + 1
        Next
    End If
    
    Set rngNm = rngNm.Cells(1, 1)
    Set rngNew = Range(rngNm, rngNm.Offset(iPos - 1, 1))
    rngNew.Select
    ActiveWorkbook.Names(NameDestination).Delete
    ActiveWorkbook.Names.Add NameDestination, rngNew
End Sub


Sub CounterItem(ByRef data() As Variant, ByVal search As String)
    On Error Resume Next
    Dim iPos As Integer
    Dim hi As Integer
    Dim bFound As Boolean
    hi = UBound(data, 2)
    If Not Err.Number = 0 Then
        Err.Clear
        ReDim data(1, 0)
        data(0, 0) = search
        data(1, 0) = 1
    Else
        bFound = False
        For iPos = 0 To UBound(data, 2)
            If data(0, iPos) = search Then
                data(1, iPos) = data(1, iPos) + 1
                bFound = True
                Exit For
            End If
        Next
        If Not bFound Then
            ' Neuer Eintrag
            ReDim Preserve data(1, UBound(data, 2) + 1)
            data(0, UBound(data, 2)) = search
            data(1, UBound(data, 2)) = 1
        End If
    End If
End Sub

Sub SortArray(ByRef data() As Variant)
    On Error GoTo Err_Handler
    Dim iPos As Integer
    Dim tmp(1) As Variant
    
    iPos = 1
    Do
        If data(0, iPos) < data(0, iPos - 1) Then
            tmp(0) = data(0, iPos)
            tmp(1) = data(1, iPos)
            data(0, iPos) = data(0, iPos - 1)
            data(1, iPos) = data(1, iPos - 1)
            data(0, iPos - 1) = tmp(0)
            data(1, iPos - 1) = tmp(1)
            If iPos > 1 Then iPos = iPos - 1
        Else
            iPos = iPos + 1
        End If
    Loop While iPos <= UBound(data, 2)
Err_Exit:
    Exit Sub
Err_Handler:
    Err.Clear
    GoTo Err_Exit
End Sub

Die Liste wird durch folgenden Aufruf erstellt:

Counter Daten, [Name-Zielliste]

"Daten" ist ein Bereich in dem die zu zählenden Einträge sich befinden

"Name-Zielleiste" ist ein die BEzeichnung  eines Namen-Eintrags.

Der angegebene Namens-Eintrag muss bereits definiert worden sein.

LG, BigBen


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
25.09.2016 12:36:30 Jens
NotSolved
Blau Zählen mit Pivot
08.10.2016 20:35:43 BigBen
NotSolved