Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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
Inhaltsverzeichnis

Schleife

Schleife
03.12.2020 10:19:27
Nina
Guten Morgen zusammen,
ich hänge hier an folgendem Problem möchte meine Tabelle nach folgendem untersuchen
Wenn in der Spalte B das Wort "akzeptiert" oder "bestanden ", dann soll bei jedem Treffer +1 gerechnet werden und in Spalte C eingetragen werden,
Wenn Spalte B eine leere Zeile enthält, dann bei jedem Treffer +1 in Spalte D gerechnet werden,
Sollte in Spalte B irgendwas anderes stehen, dann bei jedem Treffer+1 in Spalte E gerechnet werden.
Dies am besten in einer Schleife, die bis zum letzten Treffer prüft, also wenn nach zum Beispiel 6 leeren Zeilen nur noch leere Zeilen kommen, dann werden die natürlich nicht mehr in der Rechnung berücksichtigt.
Jemand der mir hier etwas helfen kann?
Liebe Grüße und danke im Voraus

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife
03.12.2020 10:29:30
Nepumuk
Hallo Nina,
in welcher Spalte stehen Einträge bis zur letzten zu überprüfenden Zeile?
Gruß
Nepumuk
AW: Schleife
03.12.2020 10:32:16
Nina
Hi Nepumuk,
Spalte B ist die zu untersuchende Spalte, welche von der Zeilenlänge variabel ist.
AW: Schleife
03.12.2020 10:36:29
Nepumuk
Hallo Nina,
ist schon klar, aber da kann ja sein, dass in den letzten 10 Zeilen nichts drin stehen. Ich muss aber die Spalte haben die bis zur letzten benutzten Zeile einen Inhalt haben.
Gruß
Nepumuk
AW: Schleife
03.12.2020 10:37:54
Nina
ah entschuldige... das wäre Spalte A
AW: Schleife
03.12.2020 10:40:46
Nepumuk
Hallo Nina,
dann benutze das Makro von Beverly. Ist zwar "schmutzig", aber funktioniert.
Gruß
Nepumuk
AW: Schleife
03.12.2020 10:32:42
Beverly
Hi Nina,
versuche es mal so (ungetestet):
Sub Addieren()
Dim lngLetzte As Long
Dim lngZeile As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
For lngZeile = 1 To lngLetzte
Select Case Cells(lngZeile, 2)
Case "akzeptiert", "bestanden"
Cells(lngZeile, 3) = Cells(lngZeile, 3) + 1
Case ""
Cells(lngZeile, 4) = Cells(lngZeile, 4) + 1
Case Else
Cells(lngZeile, 5) = Cells(lngZeile, 5) + 1
End Select
Next lngZeile
End Sub


Anzeige
AW: Schleife
03.12.2020 10:41:07
Nina
Danke Dir, Beverly, kannst Du mir auch sagen, wie ich den Code editieren muss, wenn ich angenommen die Ergebnisse im zweiten Tabellenblatt "Tabelle2" haben möchte und sich die Datenbasis in "Tabelle1" B befindet?
Liebe Grüße
AW: Schleife
03.12.2020 11:03:16
Beverly
Hi Nina,
wenn der Tabellenaufbau in Tabelle2 derselbe ist wie in Tabelle1 (das ist Bedingung!!), dann musst du bei den Zielzellen einfach noch den Blattnamen davor setzten - nach diesem Prinzip:
Worksheets("Tabelle2").Cells(lngZeile, 3) = Worksheets("Tabelle2").Cells(lngZeile, 3) + 1
Und wenn du außerdem noch eine With-Anweisung auf Tabelle1 verwendest, kannst du das Makro ausführen, gleichgültig ob du dich in Tabelle1 oder Tabelle2 befindest:
Sub Addieren()
Dim lngLetzte As Long
Dim lngZeile As Long
With Worksheets("Tabelle1")
lngLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row,  _
Rows.Count)
For lngZeile = 1 To lngLetzte
Select Case .Cells(lngZeile, 2)
Case "akzeptiert", "bestanden"
Worksheets("Tabelle2").Cells(lngZeile, 3) = _
Worksheets("Tabelle2").Cells(lngZeile, 3) + 1
Case ""
Worksheets("Tabelle2").Cells(lngZeile, 4) = _
Worksheets("Tabelle2").Cells(lngZeile, 4) + 1
Case Else
Worksheets("Tabelle2").Cells(lngZeile, 5) = _
Worksheets("Tabelle2").Cells(lngZeile, 5) + 1
End Select
Next lngZeile
End With
End Sub

Übrigens: lasse dich nicht von "schmutzigen" Bemerkungen beeindrucken sondern ignoriere sie einfach.


Anzeige
AW: Schleife
03.12.2020 11:07:46
Nina
Hallo Beverly,
vielen dank für deine ausführliche Antwort :) welche schmutzigen Kommentare ;)
Also die Struktur meiner Tabelle 2 ist anders als die von Tabelle1
Tabelle 1 A-G
Tabelle 2 A-M
die Ergebnisse sollten in Tabelle 2 in K;L;M stehen
das würde dann hier nicht funktionieren?
Liebe Grüße
AW: Schleife
03.12.2020 11:18:03
Beverly
Hi Nina,
wenn es nur andere Spalten sind, die Zeilen jedoch übereinstimmen, ist das kein Problem, da musst du nur bei den Zielzellen anstelle der Spaltennummern 3, 4, und 5 die Spaltennummern 11, 12 und 13 setzen.
Falls jedoch die Tabelle2 eine andere Reihenfolge der Daten hat als Tabelle1, dann stimmen ja die Zeilennummern nicht überein. In diesem Fall müsste man den Code anders schreiben und den Inhalt der laufenden Zeile aus Spalte A der Tabelle1 erst in Spalte A der Tabelle2 suchen.


Anzeige
AW: Schleife
03.12.2020 11:25:29
Nina
Hi Beverly,
in Tabelle2 werden tatsächlich nur die Ergebnisse eingetragen, das war es auch schon. Ich versuche das gerade mal und gebe Rückmeldung, vielen lieben Dank für Deine Hilfe :)
AW: Schleife
03.12.2020 11:35:42
Nina
Habe es jetzt mal ausprobiert, habe aber einen Laufzeitfehler, dass die Typen unverträglich sind
ist

lngLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp). _
Row, _
Rows.Count)
das IIf, da stimmt doch was nicht...
AW: Schleife
03.12.2020 12:14:05
Daniel
HI
diese Abfrage ist überflüssig.
bei über einer Millionen Zeilen ist es unwahrscheinlich, dass das Blatt bis zur letzten Zeile gefüllt ist (und wenn doch, hast du ganz andere Probleme)
daher reicht: lngLetzte = .Cells(.Rows.Count, 1).End(xlup).Row
wenn möglich, sollte man die Zeilen auch auf dem Blatt zählen (Rows.Count), in welchem man auch das End(xlup) ausführt.
Es haben zwar alle Tabellenblätter die selbe Anzahl Zeilen (außer man hat parallel eine alte xls-Datei (2003) geöffnet), aber wenn man auch eigenständige Diagrammblätter in der Datei hat und so eines wäre zufälligerweise aktiv, dann würde ohne Blattangabe Excel versuchen, auf diesem Diagrammblatt die Zeilen zu zählen und das geht schief.
Wenn man eh schon eine WITH-Klammer hat, ist es ja kein Problem noch den Punkt davor zu setzen.
Gruß Daniel
Anzeige
AW: Schleife
03.12.2020 12:21:55
Nina
Hi Daniel,
leider funktioniert es trotz Deiner Verbesserung immer noch nicht :(
AW: Schleife
03.12.2020 12:24:39
Daniel
Hi
dann lad mal die Datei hoch.
dass diese Zeile diesen Fehler liefert, ist ungewöhnlich.
Gruß Daniel
AW: Schleife
03.12.2020 13:24:38
Beverly
Hi Nina,
ich kann deinen Fehler leider nicht reproduzieren und ich wüsste auch nicht, weshalb er auftreten sollte.
Eine Zählung der Zeilen mittels Rows.Count in dem Tabellenblatt durchzuführen, in dem der Code ausgeführt wird ist (zumindest in meinem Code) überflüssig, da Rows.Count in allen Tabellenblättern identisch ist.


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige