Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Saldieren einer Summe bis der Wert 0 ist

Saldieren einer Summe bis der Wert 0 ist
01.08.2006 15:11:47
muggs
Hallo User,
vorab noch: ich bin ein VBA-newbe! Ich muss folgendes Problem lösen:
ich hab z.B. 3 Zellen mit Daten:
A1:500
A2:700
A3:800
A4:-1400
Jetzt soll mit einer Schleife der negative Wert mit den anderen Werten komplett verrechnet werden, wobei die Zahlen in A1-A3 nicht negativ werden sollen.
Also: nimm die -1400, verrechne mit dem Wert in A1 (bis A1 0 wird), nimm den Saldo, verrechne weiter mit dem Wert in A2 (bis A2 0 wird) usw. bis die -1400 komplett verrechnet sind und der Saldo in A3 ausgeschrieben wirt (hier 200).
Dazu habe ich mir folgendes überlegt, was natürlich nicht funktionierte:
(Die Zellen A1, A2, A3 und A4 habe ich etspr. a,b,c und d benannt.

Sub ...()
dim ZahL as single
dim i as integer
ZahL = cells("d").value
do
for i = a to c
ZahL = Cells("i").value + Zahl
If Zahl <= 0 Then
Cells("i").value = 0
Else
Cells("i").value = cells("i").value + ZahL
next i
Loop Until ZahL = 0
End Sub

Das Ding hat aber nicht funktioniert... :(
Hat jemand eine bessere Idee?
Vielen Dank im Voraus!
Stefan

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Saldieren einer Summe bis der Wert 0 ist
01.08.2006 16:13:19
Andreas_A
Hi Stefan,
für dein Problem mußt du nicht extra was programmieren, klingt (so wie ich das verstanden habe) nach einer sog. "linearen Programmierung", also benutze den Solver:
Wenn du ihn noch nicht aktiviert hast dann:
1. Extras &gt Add-Ins
2. Vor Solver ein Häkchen machen
3. Jetzt den Solver auswählen: Extras &gt Solver
4. Dein Problem definieren (Welche Werte sollen verändert werden, dürfen nicht unter 0 oder über einen bestimmten Wert gelangen...)
Hoffe das hilft dir weiter,
Gruß,
Andreas_A
AW: Saldieren einer Summe bis der Wert 0 ist
01.08.2006 16:25:54
muggs
Hi Andreas,
Danke für deine Antwort! Der Solver scheint mir ungeignet zu sein, denn ich führe keine Optimierung unter Nebenbedingungen durch, will lediglich einen Wert mit anderen Werten verrechnen.
Da ich das mehrmals machen muss, also das gleiche Problem wieder in Spalte B, C usw. und auch in mehreren Dateien, wollte ich mir das Leben mit einem Makro erleichtern und nicht alles per Hand saldieren.
Gruß
Stefan
Anzeige
AW: Saldieren einer Summe bis der Wert 0 ist
01.08.2006 20:55:16
Gerd
Hallo Stefan,

Sub Null_Summen_Spiel()
Dim curSumCells As Currency, curSubtrahieren As Currency, lngRow As Long
'Summe A1:A3
curSumCells = Application.WorksheetFunction.Sum(Range(Cells(1, 1), Cells(3, 1)))
'Wert A4
curSubtrahieren = Cells(4, 1).Value
If Abs(curSubtrahieren) >= curSumCells Then
Range(Cells(1, 1), Cells(3, 1)).Cells.Value = 0
curSubtrahieren = curSubtrahieren + curSumCells
Else
For lngRow = 1 To 3
If Abs(curSubtrahieren) > Cells(lngRow, 1).Value Then
curSubtrahieren = curSubtrahieren + Cells(lngRow, 1).Value
Cells(lngRow, 1).Value = 0
Else
Cells(lngRow, 1) = Cells(lngRow, 1) + curSubtrahieren
curSubtrahieren = 0
Exit For
End If
Next
End If
'restlichen Abzugsbetrag in A4 eintragen
Cells(4, 1).Value = curSubtrahieren
End Sub

Gruß
Gerd
Anzeige
AW: Saldieren einer Summe bis der Wert 0 ist
02.08.2006 10:44:58
muggs
Danke Gerd,
Das Makro hat wunderbar funktioniert! Ich muss es nur anpassen, damit der selbe Vorgang auch für weitere Spalten wiederholt werden kann- B, C usw. Ich denke ich kopiere es einfach ein paar mal und ändere die Zellangaben- Cells(1,2), (2,2) usw...
Schönen Gruß
Stefan
AW: Saldieren einer Summe bis der Wert 0 ist
02.08.2006 12:28:11
Gerd
Hallo Stefan,
danke für die Rückmeldung.
Ich hoffe, dass Du noch nicht allzuviel kopiert hast.
Mit einer Spaltenvariable u. einer Schleife geht das auch
über mehrere Spalten am Stück.
Die Spaltennummer für die letzte Spalte (rechts) kriegts Du,
indem Du in den allgemeinen Optionen (Menü Extras) die Bezugsart auf
Z1S1 umstellst oder von Spalte A nach rechts durchzählst.

Sub Null_Summen_Spiel()
Dim curSumCells As Currency, curSubtrahieren As Currency, lngRow As Long
Dim intCol As Integer
For intCol = 1 To 5 'Spalten A bis E
'Summe Zeile 1:3
curSumCells = Application.WorksheetFunction.Sum(Range(Cells(1, intCol), Cells(3, intCol)))
'Wert Zeile 4
curSubtrahieren = Cells(4, intCol).Value
If Abs(curSubtrahieren) >= curSumCells Then
Range(Cells(1, intCol), Cells(3, intCol)).Cells.Value = 0
curSubtrahieren = curSubtrahieren + curSumCells
Else
For lngRow = 1 To 3
If Abs(curSubtrahieren) > Cells(lngRow, intCol).Value Then
curSubtrahieren = curSubtrahieren + Cells(lngRow, intCol).Value
Cells(lngRow, 1).Value = 0
Else
Cells(lngRow, intCol) = Cells(lngRow, intCol) + curSubtrahieren
curSubtrahieren = 0
Exit For
End If
Next
End If
'restlichen Abzugsbetrag in Zeile 4 eintragen
Cells(4, intCol).Value = curSubtrahieren
Next
End Sub

Gruß
Gerd
Anzeige
AW: Saldieren einer Summe bis der Wert 0 ist
02.08.2006 23:16:32
muggs
Hallo Gerd,
naja Einiges hatte ich schon fleißig kopiert... Deine Erweitereung des Makros ist natürlich die viel feinere Version!
Also vielen Dank nochmals, dass Du Dir die Mühe gemacht hast!!!
Ein kleines Problem stellte ich fest- ab der zweiten Spalte wird irgendwie nicht richtig verrechnet: Der Wert für curSubtrahieren wird zwar Null, doch die Zahlen in den Zellen B1-B3... bleiben bestehen..
Du hast mir aber sehr geholfen, danke!
Schönen Gruß
Stefan
AW: Saldieren einer Summe bis der Wert 0 ist
02.08.2006 23:40:59
Gerd
Hallo Stefan,
das verstehe ich jetzt (noch) nicht.
Ich bräuchte mal Musterzahlen für ein paar Spalten.
Gruß
Gerd
Anzeige
AW: Saldieren einer Summe bis der Wert 0 ist
03.08.2006 09:12:04
muggs
Hallo Gerd,
in der Datei habe ich Beispielszahlen für 50 Spalten genommen, um das Makro anzuwenden:
https://www.herber.de/bbs/user/35538.xls
Ab Spalte B werden dann irgendwie nur 100 Euro saldiert, obwohl in der Zeile 4 dann überall 0 angezeigt wird!
Danke nochmals für deine Hilfe!
Schönen Gruß
Stefan
AW: Saldieren einer Summe bis der Wert 0 ist
04.08.2006 08:05:12
Gerd
Hallo Stefan,
ja ich hatte ein bisschen geschludert u. einmal vergessen,
statt 1 die Spaltenvariable intcol reinzuschreiben.
Sub Null_Summen_Spiel()
Dim curSumCells As Currency, curSubtrahieren As Currency, lngRow As Long
Dim intCol As Integer
For intCol = 1 To 51 'Spalten A bis AY
'Summe Zeile 1:3
curSumCells = Application.WorksheetFunction.Sum(Range(Cells(1, intCol), Cells(3, intCol)))
'Wert Zeile 4
curSubtrahieren = Cells(4, intCol).Value
If Abs(curSubtrahieren) &gt= curSumCells Then
Range(Cells(1, intCol), Cells(3, intCol)).Cells.Value = 0
curSubtrahieren = curSubtrahieren + curSumCells
Else
For lngRow = 1 To 3
If Abs(curSubtrahieren) &gt Cells(lngRow, intCol).Value Then
curSubtrahieren = curSubtrahieren + Cells(lngRow, intCol).Value
Cells(lngRow, intCol).Value = 0
Else
Cells(lngRow, intCol) = Cells(lngRow, intCol) + curSubtrahieren
curSubtrahieren = 0
Exit For
End If
Next
End If
'restlichen Abzugsbetrag in Zeile 4 eintragen
Cells(4, intCol).Value = curSubtrahieren
Next
Ein schönes Wochenende
Gerd
Anzeige
AW: Saldieren einer Summe bis der Wert 0 ist
04.08.2006 09:00:28
muggs
Hallo Gerd,
ja genau- in der Zeile "Cells(lngRow, intCol).Value = 0" hatte ich gestern noch intCol eingesetzt, sodass es dann funktionierte!
Nochmals vielen Dank und Dir auch ein schönes Wochenende!
Schönen Gruß
Stefan

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige