Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1692to1696
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Summenprodukt gefilterter Bereich

Summenprodukt gefilterter Bereich
27.05.2019 19:11:55
Christian
Moin alle zusammen,
ich möchte in einer Tabelle abwechselnd nach zwei Kriterien filtern und dabei mit einer Kombination aus Summenprodukt und Zählenwenn, eindeutige Werte bestimmen (es befinden sich Duplikate in der Tabelle). Also eine Nummer referenziert auf zwei Unternummern und ich möchte nur die übergeordnete Nummer ermitteln.
Die Summenprodukt Kombination funktioniert auch weil ich vorher beide Kritieren in verschiedenen Tabellen gespeichert habe. Jetzt möchte ich aber denn SAP Extrakt vereinfachen und beides in eine Tabelle abspeichern.
Mit meiner Formelstruktur erfasse ich zwar die neuen Zeilen im gefilterten Bereich
lngLZeile2 = lngLZeile1 - 1
Jedoch ignoriert meine Formel die Zeilen Anzahl von z.B. 22 und nimmt stattdessen denn kompleten Bereich. Was mache ich hier falsch? Vielen Dank für eure Unterstützung :)

.Range("H10").Formula = "=SUMPRODUCT(1/COUNTIF(Created!A2:A" & lngLZeile2 & ",Created!A2:A" & lngLZeile2 & "))" 'Created KITs


Option Explicit
Sub Created_()
Dim wsCr As Worksheet
Dim wsOver As Worksheet
Dim wsCl As Worksheet
Dim lngLZeile1 As Long
Dim lngLZeile2 As Long
Dim lngLZeile3 As Long
Dim lngLZeile4 As Long
Dim lngAktZeile As Long
Dim iLSpalte As Integer
Dim iAktSpalte As Integer
Dim strSpalte As String
Set wsCr = TabCr
Set wsCl = TabCl
Set wsOver = TabBoard
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With wsCr
lngLZeile1 = .Range("A2").End(xlDown).Row 'Created
.Range("A" & lngLZeile1).AutoFilter Field:=14, Criteria1:="KIT"
lngLZeile1 = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count
lngLZeile2 = lngLZeile1 - 1
.Range("H10").Formula = "=SUMPRODUCT(1/COUNTIF(Created!A2:A" & lngLZeile2 & ",Created!A2:A"  _
& lngLZeile2 & "))" 'Created KITs
Application.Calculation = xlCalculationAutomatic
wsOver.Range("H10").Copy
wsOver.Range("H10").PasteSpecial Paste:=xlPasteValues
Application.Calculation = xlCalculationManual
.Range("A" & lngLZeile1).AutoFilter Field:=14, Criteria1:="Other"
lngLZeile1 = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count
lngLZeile2 = lngLZeile1 - 1
.Range("I10").Formula = "=SUMPRODUCT(1/COUNTIF(Created!A2:A" & lngLZeile2 & ",Created!A2:A"  _
& lngLZeile2 & "))"
Application.Calculation = xlCalculationAutomatic
wsOver.Range("I10").Copy
wsOver.Range("I10").PasteSpecial Paste:=xlPasteValues
End With
wsOver.Range("H10:I10").Copy
wsOver.Range("H10:I10").PasteSpecial Paste:=xlPasteValues
With wsOver
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summenprodukt gefilterter Bereich
27.05.2019 19:31:13
Luschi
Hallo Christian,
was Du da machst, muß ja in die Hose gehen:
- lngLZeile2 enthält die die Anzahl der gefilterten Zeilen (ohne Überschrift)
- ist nur eine Zeile sichtbar durch den Filter, dann ergibt
  "Created!A2:A" & lngLZeile2 den Bereich 'Created!A2:A1'
- ist garkeine Zeile sichtbar, dann hast Du einen Formelfehler produziert
  'Created!A2:A0'!!!
Gruß von Luschi
aus klein-Paris
AW: Summenprodukt gefilterter Bereich
27.05.2019 19:43:48
Christian
Danke für deinen Tipp, denn ich auch gleich umgesetzt habe. Jetzt berücksichtgt die Formel die korrekte Anzahl an Zeilen. Leider werden aber auch wieder Duplikate mitgezählt.

Option Explicit
Sub Created_()
Dim wsCr As Worksheet
Dim wsOver As Worksheet
Dim wsCl As Worksheet
Dim lngLZeile1 As Long
Dim lngLZeile2 As Long
Dim lngLZeile3 As Long
Dim lngLZeile4 As Long
Dim lngAktZeile As Long
Dim iLSpalte As Integer
Dim iAktSpalte As Integer
Dim strSpalte As String
Set wsCr = TabCr
Set wsCl = TabCl
Set wsOver = TabBoard
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With wsCr
lngLZeile1 = .Range("A2").End(xlDown).Row 'Created
.Range("A" & lngLZeile1).AutoFilter Field:=14, Criteria1:="KIT"
lngLZeile1 = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count
lngLZeile2 = lngLZeile1 - 1
.Range("H10").Formula = "=SUMPRODUCT(1/COUNTIF(Created!A2:A" & lngLZeile2 & ",Created!A2:A"  _
& lngLZeile2 & "))" 'Created KITs
Application.Calculation = xlCalculationAutomatic
wsOver.Range("H10").Copy
wsOver.Range("H10").PasteSpecial Paste:=xlPasteValues
Application.Calculation = xlCalculationManual
.Range("A" & lngLZeile1).AutoFilter Field:=14, Criteria1:="Other"
lngLZeile3 = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count
lngLZeile4 = lngLZeile3 - 1
.Range("I10").Formula = "=SUMPRODUCT(1/COUNTIF(Created!A2:A" & lngLZeile4 & ",Created!A2:A"  _
& lngLZeile4 & "))"
Application.Calculation = xlCalculationAutomatic
wsOver.Range("I10").Copy
wsOver.Range("I10").PasteSpecial Paste:=xlPasteValues
End With
With wsOver
End With
End Sub

Anzeige
Filter sparen
27.05.2019 19:47:42
Christian
Die Filterung mache ich auch nur deswegen weil ich noch nicht darauf gekommen bin, wie ich meiner Summenprodukt Formel ein weiteres Kriterium hinzufügen kann.
Wenn ich dieser Formel jetzt auch noch das Kriterium "KIT" in Spalte N bzw. "Other" hinzufügen könnte, könnte ich mir die Filterun komplett sparen. Vielleicht habt Ihr da eine Idee :)?
=SUMMENPRODUKT(1/ZÄHLENWENN(A2:A43;A2:A43))

AW: Summenprodukt gefilterter Bereich
27.05.2019 19:55:33
Luschi
Hallo Christian,
ich würde 'SUBTOTAL' benutzen, da kann man doch angeben, ob nur sichtbare/gefilterte Werte eine Rolle spielen. Zeige noch mal ein praktisches Beispiel anhand einer kleinen Demodatei.
Gruß von Luschi
aus klein-Paris
Anzeige
geschafft :) Vielen Dank für deine Unterstützung
27.05.2019 20:15:29
Christian
Vielen Dank

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige