Microsoft Excel

Herbers Excel/VBA-Archiv

WorksheetFunction.Subtotal(9, Range(Cells(1, 4), C

Betrifft: WorksheetFunction.Subtotal(9, Range(Cells(1, 4), C
von: RainerL
Geschrieben am: 18.04.2003 - 20:19:48

Hallo liebes Forum,

HILFE GESUCHT!
[Win98, Excel97, VBA]

habe ein selbst verfassten Konto-Programm.

in Spalte 3 steht die Wertstellung
in Spalte 4 stehen die Ausgaben
in Spalte 5 stehen die Einnahmen
in Spalte 13 stehen die Kontonummer
in Spalte 2 soll der jeweilige Saldo stehen

Die Tabelle zu sortieren nach Konto und dann nach Wertstellung geht ohne Probleme. Danach habe eine Tabelle, in der das Konto
015 mit den einzelnen Buchungen vom 01.01.2002 bis zum 31.12.2002 steht dann folgt das Konto 017 auch nach Zeit sortiert usw.
Markiert ich jetzt zB. die Zelle (A,15), so wird der Saldo in Zelle (B,15) geschrieben

So läufts bislang:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim r As Long
r = Target.Row
If Target.Column = 1 Then
Cells(r, 2) = WorksheetFunction.Subtotal(9, Range(Cells(1, 4), Cells(r, 5)))
endif
end sub

Nun ergibt sich dass problem, dass mir der saldo über alle kontonummern nix nutzt (möchte ja den Saldo eines bestimmten Kontos wissen). Möchte auch nicht vorher filtern, um nur ein Konto zu sehen, sondern durch die gesamte Tabelle mit allen Konten scrollen können.

Also Änderung für Range(Cells(1, 4), Cells(r, 5)) --> in dieser Range sollen nur die Werte aus Spalte 4 und 5 erfasst werden, bei denen die Kontonummer gleich ist Cells(r, 13)= Cells(r-1, 13)


Mit eine For - Next Schleife arbeiten ? Gibt es etwas besseres / schneller ( Pentium 233, ca. 1000 Datensätze) ?


mfg und vielen Dank im Voraus

Rainer

  

Re: WorksheetFunction.Subtotal(9, Range(Cells(1, 4), C
von: Ramses
Geschrieben am: 18.04.2003 - 21:14:13

Hallo Rainer,

eine, etwas gestrickte, Methode,... aber funktioniert sehr schnell:

Tabelle1
 AB
1KontonummerBetrag
247111
352111
447111
552111
647111
7  
8Ergebnis3
Formeln der Tabelle
B8 : =SUMMENPRODUKT((A2:A6=4711)*B2:B6)
Excel Tabellen einfach im Web darstellen   Excel Jeanie HTML  2.0    Download  


und das passende Makro dazu:

Option Explicit

Sub Simple_Sum()
Dim x As Variant, konto As Variant
konto = "4711"
Range("b9").FormulaLocal = "=SUMMENPRODUKT((A2:A6=" & konto & ")*B2:B6)"
End Sub

Leider lässt die "WorksheetFunktion.SumProduct" diesen Construct unter VBA nicht zu, deshalb der Umweg über die "FormulaLocal" der Zelle.

Gruss Rainer

  

Re: WorksheetFunction.Subtotal(9, Range(Cells(1, 4), C
von: RainerL
Geschrieben am: 18.04.2003 - 23:33:52

Hallo Rainer,

vielen Danke, werde es gleich ausprobieren.

Gruß aus Berlin

Rainer