Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Summe mit variablem Bereich

Betrifft: Summe mit variablem Bereich von: Marc
Geschrieben am: 13.10.2014 09:51:30

Hallo,

ich habe seinerzeit (auch mit Hilfe dieses Formums) für eine soziale Kleiderbörse mit Excel 2003 eine Abrechnungshilfe geschrieben. Jetzt mit 2007/2010 funktioniert das Marko nicht mehr, es wird lediglich ""Summe()"" ausgegeben...im Makro steht:

Sub Summe()
' Tastenkombination: Strg+s
'
    ActiveCell = "Summe"
    Application.SendKeys ("%=~")
End Sub

Also, in der Liste trägt die Kassiererin in Spalte A den die Verkäufternummer ein und in Spalte B den dazugehörigen Preis. Hat sie alle Arktikel erfasst soll mit der Tasenkombination STRG+S in der daunter folegende Zeile in Spalte A "Summe" geschrieben stehen und in Spalte "B" die Summe aus dem darüber liegenden Bereich bis zur letzten Summe... (ählich so wie es mit der händischen version "Autosumme klappt). Die Zeile mit der Summe soll auch noch anders formatiert sein...siehe Datei in er ich das händisch gemacht habe....wäre toll wenn jemand eine Lösung hätte...DANKE!!!!

https://www.herber.de/bbs/user/93133.xlsx

  

Betrifft: AW: Summe mit variablem Bereich von: yummi
Geschrieben am: 13.10.2014 10:38:33

Hallo Marc,

hiermal ein Makro was das leistet, was du willst (hoffe ich)

Das ganze mit ctrl+s zu steuern würde ich noch mal überdenken, dass ist normalerweise speichern. Ich hab es jetzt auf ctrl+S gelegt.

https://www.herber.de/bbs/user/93135.xlsm

Gruß
yummi


  

Betrifft: ...und was ist... von: Oberschlumpf
Geschrieben am: 13.10.2014 11:12:44

Hi

...wenn zu den schon vorhandenen Zeilen noch weitere hinzugefügt werden sollen?
Also oberhalb von schon vorhandenen Zeilen mit der Summenformel.

Ciao
Thorsten


  

Betrifft: AW: ...und was ist... von: yummi
Geschrieben am: 13.10.2014 11:17:45

Hi Oberschlumpf,

dann schlumpfst du das "Summe" aus der Zelle und es wird neu geschlumpft.

;-)

Grüße
yummi


  

Betrifft: aha..ähh...hmm???...owT von: Oberschlumpf
Geschrieben am: 13.10.2014 11:21:09




  

Betrifft: ok auf deutsch ;-) von: yummi
Geschrieben am: 13.10.2014 11:23:12

na gut auf deutsch ;-)
wenn du das Wort Summe aus der Zelle löscht und dann nochmal Ctrl+S drückst, wird die Summe auch für die neuen Zeilen berechnet.

;-)

Gruß
yummi


  

Betrifft: oder noch einfacher von: yummi
Geschrieben am: 13.10.2014 11:25:39

wenn du eine neue Zeile einfügst und dort einen Betrag eingibst, dann aktualisiert sich die Summe automatisch.

Gruß
yummi


  

Betrifft: AW: oder noch einfacher von: Oberschlumpf
Geschrieben am: 13.10.2014 11:36:20

ok, aber das neu einfügen einer Zeile hätte man ja auch gleich aktualisieren können...siehe mein Beitrag ;-)


  

Betrifft: AW: oder noch einfacher von: yummi
Geschrieben am: 13.10.2014 11:40:41

wir werden eh kein feedback bekommen


  

Betrifft: AW: oder noch einfacher von: Oberschlumpf
Geschrieben am: 13.10.2014 11:52:30

a) ich meinte nich "aktualisieren", sondern "automatisieren" :-)
b) wenn kein feedback, gibbs a) verbal Kloppe für Marc + b) landet er zumindest auf meiner "schwarzen liste" --> gibt keine Hilfe mehr für Marcs :-)


  

Betrifft: AW: oder noch einfacher von: Marc
Geschrieben am: 13.10.2014 12:06:39

Hallo zusammen,

dass ging aber flux....Danke euch erstmal...aber denkt dran...hier schreibt ein Anfänger...also nicht zu kompliziert schreiben..

hab jetzt mal das Makro (da kommt doch kein normaler Mensch drauf:-)) in die originale Datei kopiert...und es läuft...:-) bis auf eine Kleinigkeit...bei jedem SRG-S rechnet er alle summen neu aus...bei 5.000 Verkäufen dauert das zu lange...eigentlich sollte nur je der letzte Absatz,also bis zu letzten Summe, gerechnet werden..


  

Betrifft: AW: oder noch einfacher von: yummi
Geschrieben am: 13.10.2014 12:21:00

Hallo Marc,

dann kopier dir das Makro in deine Datei:

Sub SummeBerechnenVonUnten()
Dim letztezeile As Long
Dim i As Long
Dim bGef As Boolean

'finde letzte Zeile
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'ist letzte Teile <> summe
If ActiveSheet.Cells(letztezeile, 1).Value <> "Summe" Then
    ActiveSheet.Cells(letztezeile + 1, 1).Value = "Summe"
    bGef = False
    i = letztezeile
    Do While bGef = False
        If ActiveSheet.Cells(i, 1).Value <> "Summe" Then
            i = i - 1
        Else
            bGef = True
        End If
    Loop
    ActiveSheet.Cells(letztezeile + 1, 1).Value = "Summe"
    ActiveSheet.Cells(letztezeile + 1, 2).FormulaLocal = "=Summe(B" & i + 1 & ":B" &  _
letztezeile & ")"
End If

End Sub

das berechnet nur die letzte Summe. Ich hatte es anders gemacht, weil du in dienem Beispiel zwischendurch leere Summen hattest.

Gruß
yummi


  

Betrifft: AW: aha..ähh...hmm???...owT von: Marc
Geschrieben am: 13.10.2014 15:23:38

danke danke....jetzt läufts....nur dass oben in der erste Zeile auch schon vorher "Summe" stehen muss...hab ich jetzt per hand eingetragen und die Zeile ausgeblendet...:-)
Hat jemand von euch beiden Lust & Zeit, mir das Marko am telefon zu erklären?

Gruß

Marc


  

Betrifft: AW: aha..ähh...hmm???...owT von: yummi
Geschrieben am: 13.10.2014 15:36:11

Hallo Marc,

welches makro hast du denn jetzt genommen?

Gruß
yummi


  

Betrifft: AW: aha..ähh...hmm???...owT von: Marc
Geschrieben am: 13.10.2014 15:38:45

das letzte von dir...


  

Betrifft: Erklärung von: yummi
Geschrieben am: 13.10.2014 16:02:09

Hallo Marc,

dann kommentier ich mal die zeilen:

Sub SummeBerechnenVonUnten()
Dim letztezeile As Long
Dim i As Long
Dim bGef As Boolean

'finde letzte Zeile
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row      'berechnet letzte benutzete  _
Zeile in Spalte A
'ist letzte Teile <> summe
If ActiveSheet.Cells(letztezeile, 1).Value <> "Summe" Then       'Steht in der letzten Zeile in  _
Spalte A nicht "Summe"?
    ActiveSheet.Cells(letztezeile + 1, 1).Value = "Summe"     'schreibt in Spalte A in die nä _
chste Zeile nach der letzten "Summe"
    bGef = False                                   'initialisieren der bool Variablen
    i = letztezeile                                'initialisiere der Laufvariable auf  _
letzteZeile
    Do While bGef = False                          'solange bGef = false mache
        If ActiveSheet.Cells(i, 1).Value <> "Summe" Then      'steht in der i.Zeile in Spalte A  _
 nicht "Summe"?
            i = i - 1                 'laufvariable ein verringern, da wir ja von unten nach  _
oben suchen
        Else
            bGef = True          'wenn in Zeile i in Spalte A "Summe" gefunden, dann bgef =  _
true, sorgt für das verlassen der do While Schleife
        End If
    Loop              'ende do while
'in i steht jetzt die zeilennummer, wo das vorige "Summe" gefunden wurde (angenommen 65)
    ActiveSheet.Cells(letztezeile + 1, 1).Value = "Summe"      'schreibe in Spalte A in zeile  _
letztezeile+1 (erste freie Zeile) "Summe"
    ActiveSheet.Cells(letztezeile + 1, 2).FormulaLocal = "=Summe(B" & i + 1 & ":B" &  _
letztezeile & ")"   Schreibe in selbe Zeile (angenommen 72) Spalte B die Formel =Summe(B66:B71)
End If

End Sub
am besten mal schritt für Schritt mit dem debugger anschauen und die Inhalte der Variablen anzeigen lassen.

Ich hoffe es sind jetzt alle Klarheiten beseitigt ;-)

Gruß
yummi


  

Betrifft: AW: Erklärung von: Marc
Geschrieben am: 13.10.2014 16:21:46

danke danke...aber das ist nun wirklich zu hoch für mich...aber funktioniert auch nicht..hat irgendwie nen Problem mit den letzten Zeilen...??!?!?


  

Betrifft: AW: Erklärung von: yummi
Geschrieben am: 13.10.2014 16:28:40

Hallo Marc,

du solltest das auch nicht laufen lassen, sondern dass was du schon eingebunden hast. Das hier war das selbe nur mit zusätlichen kommentaren für jede zeile. kann sein das die kommentare zu lang sind und das das Forum die zeilenumbrüche nicht richtig macht.

also einfach mal dein laufendes Makro nehmen, den cursor in die sub setzen im VBA Editor (Alt+F11) und mit F8 step by step durchlaufen. Wenn du dann mit dem Mauszeiger über die Variable gehst kannst du sehen was drinsteht. ;-)

Viel spass beim Verstehen
yummi


  

Betrifft: AW: Summe mit variablem Bereich von: Oberschlumpf
Geschrieben am: 13.10.2014 11:20:20

Hi Marc

Ich hab mich auch mal an deiner Frage versucht.

https://www.herber.de/bbs/user/93136.xlsm

Ich hab aber die Halbautomatik mit Strg-s ganz ausgeschaltet.

Anstelle dessen hab ich deine Testdatei nun so aufgebaut, dass...
...nach jedem Eintrag für verkäufer-Nr + Preis automatisch eine leere Zeile hinzugefügt wird
...direkt nach der Leerzeile wird in Spalte A "Summe" eingefügt
...für Spalte B wird zuerst in Spalte A nach dem Wort "Summe" oder "verkäufer-Nr" gesucht
......wenn gefunden, wird die darunter liegende Zeile die Startzeile für die Summenformel
......die Zeile mit dem zuletzt eingetragenen Wert wird die Endzeile für die Summenformel
...nun wird in Spalte B die richtige Summenformel eingetragen

In die jeweils hinzugefügte LEERE Zeile kann bei Bedarf jede schon vorhandene Zwischensumme um weitere Einträge erweitert werden.

Hilfts?

Ciao
Thorsten


  

Betrifft: AW: Summe mit variablem Bereich von: Oberschlumpf
Geschrieben am: 13.10.2014 18:06:49

Hi Marc

Warum passt denn meine Idee nicht?
Du schreibst hier ja gar nix rein...hmm

Ciao
Thorsten


  

Betrifft: AW: Summe mit variablem Bereich von: Marc
Geschrieben am: 14.10.2014 07:59:47

Hi,
ne, läuft super...ohne irgendwelche shortcuts....herlich...DANKE euch!!!

Tolle, schnelle hilfe...

Marc


  

Betrifft: na, geht doch...wieso nich gleich so?!...owT von: Oberschlumpf
Geschrieben am: 14.10.2014 09:15:46




 

Beiträge aus den Excel-Beispielen zum Thema "Summe mit variablem Bereich"