Summenbildung per VBA

Bild

Betrifft: Summenbildung per VBA
von: Martin
Geschrieben am: 12.02.2005 22:26:08
Hi,
ich habe eine Summenbildung mit VBA, welche aber nur ein Fenster mit
dem Ergebnis anzeigt.
Wie kann man mit VBA Werte A10:A50 zusammenzählen und
anschließend 2 zeilen unter dem letzten Wert, das wäre A50, dass Ergebnis
einfügen lassen. In der Zelle B1 (variable) ist der Rabatt eingegeben.
Wird die Schaltfläche gedrückt, soll A10:A50 addiert und der Rabatt
Zelle B1 abgezogen werden.
Kann mir bitte jemand weiterhelfen.
Danke
Gruß Martin

Bild

Betrifft: AW: Summenbildung per VBA
von: Josef Ehrensberger
Geschrieben am: 12.02.2005 22:29:01
Hallo Martin!
Warum mit VBA und nicht einfach einer Formel in "A52" ?

Range("A52") = Application.Sum(Range("A10:A50")) - Range("B1")


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Summenbildung per VBA
von: Martin
Geschrieben am: 12.02.2005 22:39:59
Hallo Sepp,
ich habe eine Exceltabelle bei welcher Daten vom Blatt 1 in das Blatt 2 kopiert werden.
Da die Zeilenanzahl ständig variiert, würde mir bei jedem kopieren die Zelle überschrieben.
Deshalb wäre gut, wenn ich eine Summenbildung mit VBA erzwingen könnte und wie bereits
beschrieben in der 2. Zeile unter dem letzten Wert eingefügt würde.
Danke
Gruß Martin
Bild

Betrifft: AW: Summenbildung -Variante?
von: Jens_Pu
Geschrieben am: 12.02.2005 22:49:28
Hallo Martin,
nur so als Denkanstoß, deswegen auch noch offen.
Schon mal dran gedacht, die Summenzeile oben zu machen?
Ich mache das teilweise sehr gerne, dass Die Summen über den Spalenbeschriftungen stehen.
Hat den Vorteil, die Formeln sind fest und ich kann unten anfügen, löschen einfügen wie ich will. zusätzlich habe ich immer auch eine Bezeichnung der Summe durch die darunterliegende Spaltenbeschriftung.
Gruß Jens
Bild

Betrifft: AW: Summenbildung per VBA
von: Josef Ehrensberger
Geschrieben am: 12.02.2005 22:51:35
Hallo Martin!
Dann zB. so.

Sub summeDynamisch()
Dim lastRow As Long
On Error GoTo ERRORHANDLER
lastRow = IIf(Range("A65536") <> "", 65536, Range("A65536").End(xlUp).Row)
If lastRow < 10 Then lastRow = 10
Cells(lastRow + 2, 1) = _
Application.Sum(Range(Cells(10, 1), Cells(lastRow, 1))) - Range("B1")
Exit Sub
ERRORHANDLER:
Cells(lastRow + 2, 1) = "#WERT"
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Summenbildung per VBA
von: Martin
Geschrieben am: 12.02.2005 23:17:53
Hallo Sepp,
genau. Das ist es.
Nur habe ich in B1 Prozentwerte drinnen stehen. Hab es ausprobiert.
Der errechnte Wert stimmt nicht. Bsp. 60 + 10 - B1 (10%) = 60
Eigentlich müßten es 63 sein.
Danke
Gruß Martin
Bild

Betrifft: AW: Summenbildung per VBA
von: Josef Ehrensberger
Geschrieben am: 12.02.2005 23:24:20
Hallo Martin!
Prozentrechnen ist schon schwer ;-)
Dann halt so!

Sub summeDynamisch()
Dim lastRow As Long
On Error GoTo ERRORHANDLER
lastRow = IIf(Range("A65536") <> "", 65536, Range("A65536").End(xlUp).Row)
If lastRow < 10 Then lastRow = 10
Cells(lastRow + 2, 1) = _
Application.Sum(Range(Cells(10, 1), Cells(lastRow, 1))) - _
Application.Sum(Range(Cells(10, 1), Cells(lastRow, 1))) * Range("B1")
Exit Sub
ERRORHANDLER:
Cells(lastRow + 2, 1) = "#WERT"
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Summenbildung per VBA
von: Kay
Geschrieben am: 12.02.2005 23:02:43
Hallo Martin,
wenn ich das richtig sehe bezieht sich das auf den Code weiter unten, dort wo ich auch schon mal geantwortet habe.
Da könnte mann es mit einbauen.
Sorry Josef das ich mich einmische.
so z.B.

Sub SuchenUndKopieren()
Dim wksQ As Worksheet   'Quell-Tabelle
Dim wksZ As Worksheet   'Ziel-Tabelle
Dim rng As Range
Dim lngQ As Long
Dim lngz As Long
   
Set wksQ = Sheets("Quelle")
Set wksZ = Sheets("Ziel")
wksZ.Range("A2:E65536").Clear
lngQ = wksQ.Range("E65536").End(xlUp).Row
lngz = wksZ.Range("A65536").End(xlUp).Row + 1
  For Each rng In wksQ.Range(wksQ.Cells(1, 5), wksQ.Cells(lngQ, 5))
    If rng.Value > 0 Then
      rng.EntireRow.Copy wksZ.Cells(lngz, 1)
      lngz = lngz + 1
    End If
  Next
wksZ.Cells(lngz + 2, 5) = Application.Sum(Range(wksZ.Cells(1, 5), wksZ.Cells(lngz, 5)))-Range("B1")
End Sub

Gruß
Kay
Bild

Betrifft: AW: Summenbildung per VBA
von: Martin
Geschrieben am: 13.02.2005 00:44:56
Hallo Kay, Hallo Sepp,
danke, beides funktioniert perfekt.
Gruß Markus
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Summenbildung per VBA"