Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Summieren solange eine Bedingung erfüllt ist

Summieren solange eine Bedingung erfüllt ist
16.08.2004 09:02:04
Elhana
Hi,
mein Problem:
ich habe drei Spalten "SWS", "Cp", "Note". Nun sollen solange die kleinsten Noten zusammengezählt werden, bis die Summer alle CP größer oder gleich 18 ist. Wie kann ich das mit dem "Solange" realisieren?
Anzeige
AW: Summieren solange eine Bedingung erfüllt ist
Jan
Hi Elhana,
Was heißt denn "SWS", "Cp"? Mit zwei FOR-Schleifen könnte man solche Aufgaben lösen.
Aber dazu brauch ich genauere Angaben zu de o.g. Begriffen.
Jan
AW: Summieren solange eine Bedingung erfüllt ist
Dr.
SWS = Semesterwochenstunden
Cp = Creditpoints
Tipp ich mal.
AW: Summieren solange eine Bedingung erfüllt ist
Elhana
Hi,
Dr. hat recht,es handelt sich bei SWS um Zahlen von 1-6, und bei CP um Zahlen von 2-10
Aber kannst du deine Idee näher ausführen, Jan?
Anzeige
AW: Summieren solange eine Bedingung erfüllt ist
Jan
Hi Elhana,
Stell mal ein Beispiel ins Forum. Mir fehlt der Zusammenhang zwischen den einzelnen
Spalten.
Jan
AW: Summieren solange eine Bedingung erfüllt ist
Elhana
Hi,
Also es geht um Vorlesungen:
jede Vorlseung hat eine bestimmte anzahl an sws und eine bestimmte anzahl an Cp, die man dafür erhält. Außerdem bekommt man am ende vom Semester für die Vorlesung eine Note.
Nun habe ich einen bestimmten Fachbereich, in dem ich mehrere Vorlesungen belegt und entsprechende Noten erhalten habe, sagen wir es sind 10 Vorlesungen.
Nun sollen die besten Noten aus diesen 10 Vorlesungen zusammengezählt werden, aber nur solange, bis die Summe der CP, die zu den jeweiligen Noten (bzw. Vorlesungen) gehören größer oder gleich 18 ist. (Alle Anderen Noten werden nicht berücksichtigt)
Beispiel:
1.Vorles: 2SWS, 3Cp, 2,3
2.Vorles: 1SWS, 2CP, 1,7
3.Vorles: 2SWS, 4CP, 2,0
4.Vorles: 6SWS, 9CP, 2,0
5.Vorles: 3SWS, 4CP, 3,3
6.Vorles: 4SWS, 6CP, 1,3 ...
Hier wäre das gewünschte Ergebnis:
1,3+1,7+2,0+2,0 =7,0 (Summe Noten)
6+2 = 8 &lt18 =&gt +4=12 &lt18 =&gt +9=21 &gt 18 stop!
So, ich hoffe, das genügt...
Anzeige
AW: Summieren solange eine Bedingung erfüllt ist
Jan
Hi Elhana,
Ich komme erst in zwei Stunden dazu mich mit dem Problem zu beschäftigen.(Arbeitsberatung)
Wenn bis dahin noch keiner geantwortet hat, melde ich mich wieder mit einer Lösung.
Jan
AW: Summieren solange eine Bedingung erfüllt ist
Jan
Hi Elhana,
anbei mal ein VBA-Code für diese Problematik mit Erläuterung.

Sub Noten()
Dim note, z1, z2, s As Integer
' Tabellenbereich nach Noten aufsteigend sortieren
anz = Cells(Rows.Count, 3).End(xlUp).Row
Range("A1:C" & anz).Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
CP = 0
Do While CP < 19   ' Schleife solange Summe CP kleiner oder gleich 18
For z = 2 To anz    ' Anfangszeile 2 setzen ; Endbedingung: eingetragene Noten in Spalte C
note = note + Cells(z, 3) ' Summierung der Noten
CP = CP + Cells(z, 2)       'Summierung der CP
If CP > 18 Then             ' CP Summe überprüfen
Exit For                ' Wenn Bedingung erfüllt, FOR-Schleife verlassen
End If
Next                            'Nächste Zeile bis Endbedingung
Loop                                ' Schleifendurchlauf bis Bedingung erfüllt
MsgBox "Notensumme:" & note         'Ergebnis ausgeben
End Sub

Die Ausgangswerte stehen dabei in den Spalten A,B und C.(SWS, CP, Note)
Teste das mal durch!
Jan
Anzeige
AW: Summieren solange eine Bedingung erfüllt ist
Elhana
Hi Jan,
danke, werde es gleich mal testen, aber noch ne kleine Frage: wie aktiviere ich den Code denn? Ich möchte keinen Button oder so was benutzen.
AW: Summieren solange eine Bedingung erfüllt ist
Elhana
Hi Jan,
im Grunde ist das ja schon gut, was du da vorgeschlagen hast, aber als ich es ausprobierte, da war hinterher meine Tabelle umgeordnet worden, aber das soll nicht sein. Kann man das nicht irgendwie anders machen, so dass die Tabelle auf dem Arbeitsblatt unverändert bleibt?
Könnte man das nicht eventuell mit hilfe von tabellenfunktionen machen, die man in vba aufruft. Also z.B. Dass man diese Formel:
{=SUmme(KKLEINSTE(WENN(...;Wenn(...;...);...);{1;2;3})}
in Vba übernimmt?
Sorry, dass ich erst so spät antworte...
Anzeige
AW: Summieren solange eine Bedingung erfüllt ist
Jan
Hi Elhana,
Die Anordnung der Tabelle mit den Monatsdaten muß bei meiner Variante immer
ein gleiches Aussehen haben. Ich hoffe, das Du es möglich machen kannst. Wenn nicht
müßte der Code natürlich noch angepaßt werden, damit Deine Daten nicht falsch zugeordnet werden.
Der Einsatz Deiner vorgeschlagenen Formel unter VBA ist nicht erforderlich, wenn
Dein Tabellenaufbau stimmt.
Jan
Anzeige
AW: Summieren solange eine Bedingung erfüllt ist
Elhana
Hat keiner eine Lösung? Es ist leider dringend
AW: Summieren solange eine Bedingung erfüllt ist
Elhana
Hi,
hast du eine Lösung hinbekommen, jan?
Ich habe auch noch mal probiert, aber so ganz das richtige is es noch net...
wird man denn wohl mit vba machen müssen.
Kann mir dahingehend auch einer helfen?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Summieren solange eine Bedingung erfüllt ist


Schritt-für-Schritt-Anleitung

Um in Excel Noten zu summieren, solange eine bestimmte Bedingung erfüllt ist, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Excel öffnen: Öffne deine Excel-Datei, in der die Daten für SWS (Semesterwochenstunden), CP (Creditpoints) und Noten stehen.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul hinzufügen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  4. Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub Noten()
       Dim note, CP As Double
       Dim anz As Integer
       Dim z As Integer
    
       anz = Cells(Rows.Count, 3).End(xlUp).Row
       CP = 0
       note = 0
    
       ' Schleife solange Summe CP kleiner als 18
       For z = 2 To anz
           note = note + Cells(z, 3).Value ' Noten summieren
           CP = CP + Cells(z, 2).Value     ' CP summieren
    
           If CP >= 18 Then
               Exit For
           End If
       Next z
    
       MsgBox "Notensumme: " & note
    End Sub
  5. VBA ausführen: Um den Code auszuführen, gehe zurück zu Excel, drücke ALT + F8, wähle Noten und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Typen sind nicht kompatibel"
    Lösung: Stelle sicher, dass die Datentypen in den Zellen korrekt sind (z.B. keine Textwerte in den Notenspalten).

  • Fehler: "Index außerhalb des Bereichs"
    Lösung: Überprüfe, ob die Anzahl der Zeilen in deiner Tabelle stimmt und dass du den Bereich richtig festgelegt hast.

  • Die Tabelle wird umsortiert.
    Lösung: Der VBA-Code sortiert die Tabelle nicht; achte darauf, dass du die Daten nicht manuell sortierst, bevor du den Code ausführst.


Alternative Methoden

Anstelle von VBA kannst du auch Excel-Formeln verwenden, um die Summe zu berechnen. Hier ist ein Beispiel, wie du mit der SUMMEWENN-Funktion arbeiten kannst:

=SUMMEWENN(Bereich; "<18"; Summe_Bereich)

Diese Funktion summiert Werte in einem bestimmten Bereich, solange die Bedingung erfüllt ist. Wenn du jedoch eine komplexere Logik benötigst, ist VBA oft die bessere Option.


Praktische Beispiele

Angenommen, du hast folgende Daten in den Spalten A, B und C:

SWS CP Note
2 3 2,3
1 2 1,7
2 4 2,0
6 9 2,0
3 4 3,3
4 6 1,3

Der VBA-Code summiert die Noten, solange die Summe der CP kleiner als 18 bleibt. Das Ergebnis wird in einer Meldung ausgegeben:

Notensumme: 7,0

Tipps für Profis

  • Code anpassen: Du kannst den Code leicht anpassen, um andere Bedingungen oder Berechnungen durchzuführen, je nach deinen Bedürfnissen.

  • Fehlerbehandlung: Füge Fehlerbehandlung in deinen VBA-Code ein, um mögliche Laufzeitfehler zu vermeiden.

  • Datenvalidierung: Stelle sicher, dass deine Eingabedaten korrekt sind, bevor du den Code ausführst, um unerwartete Ergebnisse zu vermeiden.


FAQ: Häufige Fragen

1. Wie aktiviere ich den VBA-Code ohne Button?
Du kannst den Code direkt über das VBA-Fenster oder mit der Tastenkombination ALT + F8 ausführen.

2. Kann ich die Berechnung auch nur mit Excel-Formeln durchführen?
Ja, du kannst mit Funktionen wie SUMMEWENN arbeiten, aber die Logik kann komplex werden, wenn du mehrere Bedingungen einbeziehen möchtest.

3. Wie lange dauert es, die Daten zu verarbeiten?
Die Bearbeitungszeit hängt von der Anzahl der Zeilen in deiner Tabelle ab, in der Regel sollte es jedoch sehr schnell gehen, selbst bei mehreren hundert Zeilen.

4. Gibt es eine Möglichkeit, die Sortierung der Tabelle zu vermeiden?
Ja, du kannst die Daten in einer Hilfsspalte aggregieren und dann die Ergebnisse separat präsentieren, ohne die Originaldaten zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige