Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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

Anzahl der "Treffer" einer If-Schleife zählen

Anzahl der "Treffer" einer If-Schleife zählen
15.08.2017 15:42:24
Hendrik
Hallo zusammen!
Das ist mein erster Beitrag in einem Excel-Forum überhaupt.
Bitte entschuldigt, wenn ich bestimmte Regeln nicht einhalte! Einfach drauf hinweise, ich mach's dann nächstes mal besser :)
Zu meinem Problem:
Ich habe eine Excel-Date mit 12 Tabellenblättern, eins für jeden Monat.
In diesen Tabellenblättern werden Verbesserungsideen gesammelt und mit Datum versehen, wann sie weiterversendet wurden.
D.h.: Ideen kommen rein (Spalte E), werden geprüft, und dann weitergesendet (Spalte N).
Dies erfolgt immer um einen Monat versetzt, d.h. die Ideen, die im Januar eingegangen sind (Datum in Spalte E, z.B. 05.01.2017) werden erst im Februar versendet (Datum in Spalte N, z.B. 21.02.2017).
Mein Problem ist:
Manchmal dauert die Prüfung der Ideen länger
(werden also später als im folgenden Monat, hier also z.B. erst im März oder April) oder kürzer
(werden also früher als im folgenden Monat, hier also z.B. bereits im Januar) , bevor die Ideen weiterversendet werden.
Beispiel:
Tabelle Januar
Idee-Nr.____Spalte E_____Spalte N
123455 - 05.01.2017 - 25.02.2017
123456 - 05.01.2017 - 23.02.2017
654321 - 05.01.2017
123457 - 05.01.2017 - 12.02.2017
098765 - 05.01.2017
123458 - 05.01.2017 - 29.01.2017
123459 - 05.01.2017 - 03.03.2017
Wenn ich nun feststellen möchte: "Wieviele im Januar eingegangene Ideen wurden versendet?"
schaue ich in Spalte N und sehe da die Versendedaten.
Hier also: Von 7 eingegangenen Ideen wurden 5 versendet.
Von den 5 wurden 3 wie geplant im Folgemonat Februar, 1 zu früh im Januar und 1 zu spät im März versendet.
Meine Chefin möchte nun wissen, wie sich die 5 versendeten Maßnahmen der Tabelle Januar genau aufteilen.
Also auf die 3+1+1.
Danke bis hier hin schon mal für die Geduld!
In einem ersten Schritt wollte ich per Knopfdruck die Ideen, die die Prüfung überstanden haben und weiterversendet wurden, mir in ein anderes Tabellenblatt (Tabelle23) kopieren lassen.
Das habe ich geschafft, und sogar mit einer Auftrennung in "Im-Februar-Versndet" und "nicht-im-februar-versendet".
Mein Problem ist jetzt die Anzahlen zu zählen und in einer Zelle der Tabelle 23 (z.B. S5) darzustellen.
Also dass er die Anzahl der Ergebnisse der If-Schleife einfach nur zählt, hier im Beispiel also für die Ideen im Februar gab es ja drei Treffer, also eine 3.
Könnt ihr mir da bitte helfen?
Er schmeißt mir in der letzten Zeile gelb markiert den "Laufzeitfehler 13" raus.
Hier ist der unfertige Code, (ich weiß, gerade am Ende fehlen noch Abfragen. Ich komme aber leider schon bei der ersten Zählung nicht weiter).
Sub JanuarVersendet()
Dim Zeile As Long
Dim ZeileMax As Long
Dim Spalte As Long
Dim n As Long
Dim i As Long
Dim wksBlatt As Worksheet
Dim varArrC As Variant, varArrD As Variant, varArrM As Variant
Dim lngAnzahl As Double
Dim lngZahl As Double
Dim Ergebnis As Double
With Tabelle2
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value >= CDate("01.02.2017") And .Cells(Zeile, 14).Value = CDate("01.03.2017") Then
.Rows(Zeile).Copy Destination:=Tabelle23.Rows(n)
n = n + 1
End If
Next Zeile
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value  "*"  _
_
Then
.Rows(Zeile).Copy Destination:=Tabelle23.Rows(n)
n = n + 1
End If
Next Zeile
End With
Set wksBlatt = Tabelle23
varArrC = wksBlatt.Range("N1:N800").Value
varArrD = wksBlatt.Range("N1:N800").Value
varArrM = wksBlatt.Range("N1:N800").Value
For lngZahl = 1 To 800
If varArrC(lngZahl, 1) >= CDate("01.02.2017") Then
'If varArrD(lngZahl, 1) 

Viele Grüße,
Hendrik

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl der "Treffer" einer If-Schleife zählen
15.08.2017 17:10:36
Robert
Hallo Hendrik,
dafür brauchst Du eigentlich keinen VBA-Code. Schau Dir mal beiliegende Datei an. Dort wird nach Wahl des gewünschten Auswertemonats die Liste entsprechend ausgewertet. Geliefert wird dann die Anzahl der Ideen, die in dem entsprechenden Monat eingereicht wurden und wieviele davon jeweils im Folgemonat, vor dem Folgemonat, nach dem Folgemonat und überhaupt noch nicht versandt wurden.
https://www.herber.de/bbs/user/115491.xlsx
Gruß
Robert
AW: Anzahl der "Treffer" einer If-Schleife zählen
16.08.2017 09:27:36
Hendrik
Hallo Robert,
danke schön für deine Hilfe!
Du hast natürlich Recht, das geht so auch (und vermutlich sogar einfacher).
So etwas Ähnliches hatte ich auch im Sinn.
Da es zwölf Monate, also zwölf Tabellen sind, war (zumindestens in meinem unerfahrenen Kopf) die Idee ziemlich elegant, ein 13. Tabellenblatt zu erstellen, das 12 Buttons hat und je nach Button eines der der zwölf Tabellenblätter filtert, die Ergebnisse der if-Schleifen auflistet und diese dann zählt.
Und genau da hakt es bei mir:
Ich kriege die Ideen gefiltert, aber ich kriege die simple Summe der Ergebnisse dann nicht hin!
Das frustriert mich total.
In meinem Kopf ist das so leicht:
1) Mach if-schleife
2) Zähle Ergebnisse der If-schleife.
Ich schaff's aber leider nicht.
Könntest du/ könntet ihr mir da bitte helfen, wie man das als Code schreiben soll?
Danke für deine/eure Hilfe und Geduld und bis bald,
Hendrik
Anzeige
AW: Anzahl der "Treffer" einer If-Schleife zählen
16.08.2017 10:28:43
Robert
Hallo Hendrik,
um Deine Idee aufzugreifen, habe ich habe mal Deinen Code etwas überarbeitet. Die entsprechenden Ergebnisse werden im Bereich S5:S8 in der Tabelle23 dargestellt.
Sub JanuarVersendet()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim AnzahlGeplant As Long, AnzahlFrüher As Long, AnzahlSpäter As Long
With Sheets("Tabelle2")
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value >= CDate("01.02.2017") And .Cells(Zeile, 14).Value = CDate("01.03.2017") Then
.Rows(Zeile).Copy Destination:=Sheets("Tabelle23").Rows(n)
n = n + 1
AnzahlSpäter = AnzahlSpäter + 1
End If
Next Zeile
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value  "*"  _
Then
.Rows(Zeile).Copy Destination:=Sheets("Tabelle23").Rows(n)
n = n + 1
AnzahlFrüher = AnzahlFrüher + 1
End If
Next Zeile
End With
With Sheets("Tabelle23")
.Range("S5") = AnzahlGeplant + AnzahlFrüher + AnzahlSpäter & " Ideen versendet, davon"
.Range("S6") = AnzahlGeplant & " wie geplant im Folgemonat"
.Range("S7") = AnzahlFrüher & " vorher"
.Range("S8") = AnzahlSpäter & " später"
End With
End Sub

Gruß
Robert
Anzeige
AW: Anzahl der "Treffer" einer If-Schleife zählen
16.08.2017 11:00:14
Hendrik
Man, danke für deine schnelle Hilfe Robert! :) :)
Ich probiere das gleich mal aus und gebe gleich danach Feedback.
Du siehst ja an dem stümperhaften Bruchstück-Code: Ich bin kein Programmierer :-D
Verregnete Grüße aus dem Norden,
Hendrik
AW: Anzahl der "Treffer" einer If-Schleife zählen
16.08.2017 14:25:52
Hendrik
Hello again Robert,
er versucht, mir am Ende das Ergebnis auszuwerfen (das klappt wohl schon mal! :) Alles 0, aber schon mal ein Anfang!), aber zieht leider nix aus der Tabelle2, d.h. Tabelle bleibt, bis auf den Versuch, die Ergebnisse aufzulisten ("0 Ideen, wie versendet, davon") leider leer :(
Hast du eine Idee, woran das liegen könnte?
Und wenn ja: Würdest du mir bitte nochmal helfen?
Viele Grüße,
Hendrik
Anzeige
AW: Anzahl der "Treffer" einer If-Schleife zählen
16.08.2017 14:50:07
Hendrik
Hello again Robert,
ich habe nur eine Mini-Änderung gemacht und jetzt geht's fast!
Sub JanuarVersendet()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim AnzahlGeplant As Long, AnzahlFrüher As Long, AnzahlSpäter As Long
With Tabelle2 (anstatt "With Sheets("Tabelle2")" ).
Er zählt nur 1 zuviel von den später versendeten (4 statt 3).
Aber das kriege ich bestimmt raus, woran das liegt.
Danke schön, Robert!
Ich habe jetzt natürlich noch eine Folge-Idee :)
Soll ich dafür ein neues Posting machen? Das Problem von diesem Thread hast du ja gelöst.
Außerdem möchte ich nicht unverschämt sein und dich kleckerweise um Gefallen bitten!
Viele Grüße,
Hendrik
Anzeige
AW: Anzahl der "Treffer" einer If-Schleife zählen
16.08.2017 17:20:30
Robert
Hallo,
wieso er bei "später versendet" eine mehr auswirft ist mir allerdings ein Rätsel. Die Variable AnzahlSpäter wird nur dann um 1 erhöht, wenn das Makro in Spalte N ein Datum ab dem 01.03.2017 findet und die Zeile entsprechend in die Tabelle23 kopiert wird. Insofern müsste der Wert in der Variablen mit der Anzahl der kopierten Zeilen übereinstimmen. Aber ohne die Original-Datei zu kennen ist das von hier aus ein Stochern im Nebel.
Für Deine Folge-Idee kannst Du gerne ein neues Posting machen. Wenn ich helfen kann, mache ich es gerne.
Gruß
Robert
AW: Anzahl der "Treffer" einer If-Schleife zählen
17.08.2017 09:58:34
Hendrik
Guten Morgen Robert,
hahaha, mir auch. Ich probiere nochmal etwas rum und wenn ich nix finde lade ich die Datei mal hoch.
Alles klar, dann mache ich das. Freue mich wirklich, wie geduldig du bist mit mir :) Danke dafür!
Viele Grüße,
Hendrik
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige