Sortieren, Filter
#21
Hallo,

im Arbeitsblatt "Tabelle2" habe ich dir eingefügt:
2 PivotTables mit Leezeilen nach der Zwischensumme, 
ferner einige Abfrageformeln für Beträge der PivotTables.


Angehängte Dateien
.xlsx   Ubi5_PivotTable.xlsx (Größe: 21,6 KB / Downloads: 3)
Gruß Anton.

Windows 11 64bit
Microsoft365 Insider 64bit
Antworten Top
#22
Hallo Uwe, die Formel habe ich angepasst - funktioniert bei mir trotzdem nicht - hinsichtlich Leerzeile - nach jeder Sortierung märe mein Wunsch ein Leerzeile plus die Summe der jeweiligen Sortierung.

Lg Ubi5

Hallo Anton, recht herzlichen Dank für deinen Beitrag - muss mich damit auseinander setzen - Danke!

Lg Ubi5

Hallo Anton, habe deinen Vorschlag verstanden - nochmals recht herzlichen Dank - Lg Ubi5
Antworten Top
#23
Hi

hier noch eine UDF-Lösung, die ohne spezielle Funktionen auskommt (Filter, Sortieren).

hier der UDF-Code:

PHP-Code:
Function Auswertung(Zellbereich As Range, ParamArray Filterwerte() As Variant)

Dim z As Long
Dim arr
Dim erg1
Dim erg2
Dim Suchwerte
Dim Ausgabe
Dim Check
As Boolean
ReDim Ausgabe
(1 To 3, 1 To 1)

Dim x1 As Long, x2 As Long
Suchwerte
= Filterwerte

ReDim erg1
(WorksheetFunction.Min(Zellbereich.Columns(2)) To WorksheetFunction.Max(Zellbereich.Columns(2)))
ReDim erg2(WorksheetFunction.Min(Zellbereich.Columns(1)) To WorksheetFunction.Max(Zellbereich.Columns(1)))

arr = Intersect(Zellbereich, Zellbereich.Worksheet.UsedRange).Value
For z = 2 To UBound(arr, 1)
    If IsEmpty(erg1(arr(z, 2))) Then erg1(arr(z, 2)) = erg2
    erg1
(arr(z, 2))(arr(z, 1)) = erg1(arr(z, 2))(arr(z, 1)) + arr(z, 3)
Next
   
Ausgabe
(1, 1) = arr(1, 1)
Ausgabe(2, 1) = arr(1, 2)
Ausgabe(3, 1) = arr(1, 3)

For
x1 = LBound(erg1) To UBound(erg1)
    If VarType(erg1(x1)) <> 0 Then
        Check
= IsMissing(Filterwerte)
        If Not Check Then Check = Not IsError(Application.Match(x1, Suchwerte, 0))
        If Check Then
            erg2
= erg1(x1)
            For x2 = LBound(erg2) To UBound(erg2)
                If erg2(x2) <> "" Then
                    z
= UBound(Ausgabe, 2) + 1
                    ReDim Preserve Ausgabe
(1 To 3, 1 To z)
                    Ausgabe(1, z) = x2
                    Ausgabe
(2, z) = x1
                    Ausgabe
(3, z) = erg2(x2)
                End If
            Next
            z
= UBound(Ausgabe, 2) + 1
            ReDim Preserve Ausgabe
(1 To 3, 1 To z)
           
            Ausgabe
(1, z) = ""
            Ausgabe(2, z) = ""
            Ausgabe(3, z) = WorksheetFunction.Sum(erg1(x1))
        End If
    End If
Next

Auswertung
= WorksheetFunction.Transpose(Ausgabe)


End Function

der Funktionsaufruf erfolgt dann mit dem Zellbereich als Parameter und danach folgend die Werte, für "Code", die angezeigt werden sollen.
fehlen diese Werte, wird alles ausgebeben.

PHP-Code:
=Auswertung(Tabelle1!A:C;4020;4030)

die Funktion gibt die Überschrift mit aus, dh diese ist Teil des Formelergebnisses

Wie gesagt, die Funktion benutzt keine neuen Excelfunktionen, erfordert aber den Autospill (wie man das für klassische ArrayFunktionen schreiben müsste, kann ich leider nicht mehr ausprobieren.

eine kleine Einschränkung besteht allerdings, damit die Sortierung nach "Code" funktioniert muss "Code" eine Ganzzahl sein.
Code darf kein Text oder keine Dezimalzahl sein. 
Das liegt an der Speziellen Sortiermethode über die einsortierung in ein Array.

Gruß Daniel
Antworten Top
#24
Hallo Daniel - funktionier einwandfrei - recht herzlichen Dank!
Weiters auch recht herzlichen Dank an alle die sich daran beteiligt haben.

Lg Ubi5
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste