Thema Datum  Von Nutzer Rating
Antwort
02.07.2016 20:59:45 David
NotSolved
02.07.2016 21:58:28 Gast46573
NotSolved
02.07.2016 22:15:12 David
NotSolved
03.07.2016 11:21:09 David
Solved
03.07.2016 12:39:56 David
NotSolved
03.07.2016 12:43:16 David
NotSolved
03.07.2016 14:00:25 Gast47093
NotSolved
04.07.2016 18:23:41 David
NotSolved
04.07.2016 18:59:35 Gast37512
NotSolved
04.07.2016 19:53:31 David
NotSolved
04.07.2016 19:55:05 David
NotSolved
04.07.2016 22:07:06 Gast8341
NotSolved
05.07.2016 08:20:00 David
NotSolved
05.07.2016 08:39:39 David
NotSolved
05.07.2016 14:15:14 Gast11023
NotSolved
05.07.2016 15:36:33 David
NotSolved
05.07.2016 16:01:36 Gast57337
NotSolved
05.07.2016 16:16:05 David
NotSolved
05.07.2016 20:31:06 Gast54830
NotSolved
05.07.2016 20:56:15 David
NotSolved
05.07.2016 21:35:14 Gast20964
NotSolved
05.07.2016 22:53:49 David
NotSolved
05.07.2016 22:54:49 David
NotSolved
05.07.2016 23:12:48 Gast89092
NotSolved
06.07.2016 07:47:45 David
NotSolved
06.07.2016 09:16:19 Gast62569
NotSolved
06.07.2016 09:23:44 David
NotSolved
06.07.2016 19:13:39 David
NotSolved
06.07.2016 19:29:48 Gast26981
NotSolved
06.07.2016 19:49:42 David
NotSolved
06.07.2016 20:00:07 David
NotSolved
06.07.2016 20:03:55 David
NotSolved
06.07.2016 20:19:51 Gast80888
NotSolved
06.07.2016 20:22:56 David
NotSolved
06.07.2016 20:21:41 David
NotSolved
06.07.2016 20:30:19 David
NotSolved
06.07.2016 20:32:24 David
NotSolved
06.07.2016 20:35:49 David
NotSolved
06.07.2016 20:45:07 David
NotSolved
06.07.2016 20:53:25 David
NotSolved
06.07.2016 22:00:32 Gast41758
NotSolved
07.07.2016 01:46:53 Gast21922
NotSolved
07.07.2016 08:11:14 David
NotSolved
07.07.2016 09:31:03 Gast98925
NotSolved
07.07.2016 09:42:47 David
NotSolved
07.07.2016 18:27:22 David
NotSolved
07.07.2016 19:17:22 Gast95680
NotSolved
07.07.2016 19:55:19 David
NotSolved
07.07.2016 19:56:14 David
NotSolved
07.07.2016 21:57:48 Gast58517
NotSolved
07.07.2016 23:13:14 David
NotSolved
07.07.2016 23:18:34 David
NotSolved
07.07.2016 23:28:41 David
NotSolved
07.07.2016 23:45:40 David
NotSolved
08.07.2016 07:45:22 Gast41963
NotSolved
08.07.2016 08:54:12 David
NotSolved
08.07.2016 18:47:16 David
NotSolved
08.07.2016 22:11:02 Gast54508
NotSolved
09.07.2016 10:33:15 David
NotSolved
09.07.2016 11:34:37 Gast73060
NotSolved
10.07.2016 14:13:32 David
NotSolved
Blau Worksheet_Change hier notwendig? - "Dynamische Summenbildung"
10.07.2016 14:48:56 Gast40854
NotSolved
10.07.2016 15:07:10 David
NotSolved

Ansicht des Beitrags:
Von:
Gast40854
Datum:
10.07.2016 14:48:56
Views:
389
Rating: Antwort:
  Ja
Thema:
Worksheet_Change hier notwendig? - "Dynamische Summenbildung"

Moin!
Also die ganze Schleifen beziehen sich ja immer auf die Zeilen E5, E6, E7 und E8 (analog natürlich auch für die anderen Spalten). Diese 4 sind ja die Startwerte aber denen, je nach Zeile, im Datensatz jeder vierte Wert addiert wird. Da es 4 Zeilen sind, nehme ich immer die Zeile der geänderten Zellen ( = target.row) und bilde den Rest zu vier. Jeder vierte Zeile hat dann den selben Rest. Das war notwendig, um bei Änderung von bspw. E25 zu sehen, welche der Startwert für die Summe ist. Um die Summe zu addieren wurde der Versatz so gebildet.
versatz = (Target.Row Mod 4)
Damit kamen dann diese Reste raus.
Zeile 5    Divison durch 4 ist Rest 1
Zeile 6    Divison durch 4 ist Rest 2
Zeile 7    Divison durch 4 ist Rest 3
Zeile 8    Divison durch 4 ist Rest 0
Um es dann nicht zu kompliziert zu machen, habe ich dann für die Summe den Versatz + 4 gerechnet. Mit den Resten von darüber kommt dann also entweder Zeile 5, 6, 7 oder 4 raus. DAs war dann meine Startzeile (außer bei 4 weil dort ja nix teth) für die Summe. Unkreativ halt nur mit l als Variabel bezeichnet.
For l = 4 + versatz To zeilesum - 1 Step 4
    summe = summe + ActiveSheet.Cells(l, spalte)

Das hat für die Addition gepasst, weil ich mir hier meinen Startpunkt selber suchen konnte. Habe ja einfach die 4 genommen und zum Versatz addiert. War also flexibel.

Bei der Summe ganz unten dann, war ich nicht mehr so flexibel. Die sollte ja in die Zeile , in welcher in Spalte A das Wort Summe auftaucht. Die Zeile ist ja die, welche direkt unter dem Datenfeld kommt. Als Startpunkt, um für die 3 Summen die richtige Zeile zu finden, habe ich also die Zeile von der "Summe" (dem Wort) genommen. Das ist ja aber nun schon gleich die Zeile für die Summe ab E5. Wenn ich jetzt den Versatz vom Anfang hinzuaddiert hätte, wäre ich ja eine Zeile zu tief rausgekommen. Also habe ich die Berechnung des Versatzes leicht geändert. Nun wird noch vom REst wie am Anfang noch 1 abgezogen.

versatz = Target.Row Mod 4 - 1

Das Ergebnis sieht dann so aus.

Zeile 5    Divison durch 4 ist Rest 1 -1 = 0
Zeile 6    Divison durch 4 ist Rest 2 -1 = 1
Zeile 7    Divison durch 4 ist Rest 3 -1 = 2
Zeile 8    Divison durch 4 ist Rest 0 -1 = -1

Da in der vierten Zeile (ab E8) ja nix steht und auch nichts gemacht werden sollte, habe ich geprüft, ob der Versatz -1 ist. Wenn ja sind wir in einer 8ter Zeile und machen nix. Ansonsten wurde dann so die Summe eingetragen.

ActiveSheet.Cells(zeilesum + versatz, spalte) = summe

Und mit dem jetzt geänderten Versatz , kommen wir direkt in die 3 Zeilen für die Summe. Bei E5 wird zur zeilesum nix addiert passt, für E6 1 dazu passt usw.

Wäre zugegeben vllt. einfacher gewesen, den (schon berechneten) Versatz zu lassen und unten einfach bei der Zeile für die Summe 1 abzuziehen. Also so:  zeilesum + versatz -1
Würde sogar ein paar Zeilen Code und damit Rechenzeit sparen, jetzt wo ich so drüber nachdenke vllt. sogar besser. Sieht dann so aus. (Summe berechnen und gleich eintragen mit nur einem Versatz)

If versatz = 0 Then
'also nix machen, da wir in der vierten Zeile sind
Else
    For l = 4 + versatz To zeilesum - 1 Step 4
    ' zur summe wird also immer der Wert aus der nächsten Zeile mit Versatz 4 aus der Spalte die geändert wurde addiert
            summe = summe + ActiveSheet.Cells(l, spalte)
    Next l
        ActiveSheet.Cells(zeilesum + versatz - 1, spalte) = summe
End If

Hoffe das lässt den letzten Codeabschnitt besser nachvollziehen und die Modifikation hier verwirrt nicht zu sehr. :-)
Schönen Sonntag noch VG


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
02.07.2016 20:59:45 David
NotSolved
02.07.2016 21:58:28 Gast46573
NotSolved
02.07.2016 22:15:12 David
NotSolved
03.07.2016 11:21:09 David
Solved
03.07.2016 12:39:56 David
NotSolved
03.07.2016 12:43:16 David
NotSolved
03.07.2016 14:00:25 Gast47093
NotSolved
04.07.2016 18:23:41 David
NotSolved
04.07.2016 18:59:35 Gast37512
NotSolved
04.07.2016 19:53:31 David
NotSolved
04.07.2016 19:55:05 David
NotSolved
04.07.2016 22:07:06 Gast8341
NotSolved
05.07.2016 08:20:00 David
NotSolved
05.07.2016 08:39:39 David
NotSolved
05.07.2016 14:15:14 Gast11023
NotSolved
05.07.2016 15:36:33 David
NotSolved
05.07.2016 16:01:36 Gast57337
NotSolved
05.07.2016 16:16:05 David
NotSolved
05.07.2016 20:31:06 Gast54830
NotSolved
05.07.2016 20:56:15 David
NotSolved
05.07.2016 21:35:14 Gast20964
NotSolved
05.07.2016 22:53:49 David
NotSolved
05.07.2016 22:54:49 David
NotSolved
05.07.2016 23:12:48 Gast89092
NotSolved
06.07.2016 07:47:45 David
NotSolved
06.07.2016 09:16:19 Gast62569
NotSolved
06.07.2016 09:23:44 David
NotSolved
06.07.2016 19:13:39 David
NotSolved
06.07.2016 19:29:48 Gast26981
NotSolved
06.07.2016 19:49:42 David
NotSolved
06.07.2016 20:00:07 David
NotSolved
06.07.2016 20:03:55 David
NotSolved
06.07.2016 20:19:51 Gast80888
NotSolved
06.07.2016 20:22:56 David
NotSolved
06.07.2016 20:21:41 David
NotSolved
06.07.2016 20:30:19 David
NotSolved
06.07.2016 20:32:24 David
NotSolved
06.07.2016 20:35:49 David
NotSolved
06.07.2016 20:45:07 David
NotSolved
06.07.2016 20:53:25 David
NotSolved
06.07.2016 22:00:32 Gast41758
NotSolved
07.07.2016 01:46:53 Gast21922
NotSolved
07.07.2016 08:11:14 David
NotSolved
07.07.2016 09:31:03 Gast98925
NotSolved
07.07.2016 09:42:47 David
NotSolved
07.07.2016 18:27:22 David
NotSolved
07.07.2016 19:17:22 Gast95680
NotSolved
07.07.2016 19:55:19 David
NotSolved
07.07.2016 19:56:14 David
NotSolved
07.07.2016 21:57:48 Gast58517
NotSolved
07.07.2016 23:13:14 David
NotSolved
07.07.2016 23:18:34 David
NotSolved
07.07.2016 23:28:41 David
NotSolved
07.07.2016 23:45:40 David
NotSolved
08.07.2016 07:45:22 Gast41963
NotSolved
08.07.2016 08:54:12 David
NotSolved
08.07.2016 18:47:16 David
NotSolved
08.07.2016 22:11:02 Gast54508
NotSolved
09.07.2016 10:33:15 David
NotSolved
09.07.2016 11:34:37 Gast73060
NotSolved
10.07.2016 14:13:32 David
NotSolved
Blau Worksheet_Change hier notwendig? - "Dynamische Summenbildung"
10.07.2016 14:48:56 Gast40854
NotSolved
10.07.2016 15:07:10 David
NotSolved