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

Zählen Plus

Zählen Plus
20.11.2018 12:12:41
Burak
Moin,
also ich baue grade ein Makro, dass den Input und Output ermitteln soll und dazu es in "Varianten" unterteilen soll.
Das beginnt mit einer Datumseingabe "von bis" und überprüft die Datensätze auf 2 Tabellenblättern nach Übereinstimmungen.
Das eine Tabellenblatt "R1" enthält den Input. Hier zählt er wenn:
- der Datumsstempel innerhalb des eingegebenen Zeitraums liegt
- der Masterbarcode in Spalte B sich ändert (also wenn in B11 was anderes als in B10 steht, dann nimm die B10-Zeile)
- der Wert in Spalte i größer als 0 ist
Das Zählen insoweit funktioniert schon einwandfrei, jedoch möchte ich das nicht nur als Gesamtzahl sondern unterteilt in Gruppen anhand des Wertes in Spalte A haben.
Also statt "Input 50" dann "Input: 1110 - 10, 2220 - 15...". Das ganze im Tabellenblatt InputOutput.
Makro:
Sub InOut()
Dim StartDatum As Date, EndDatum As Date, i As Integer, j As Long, inp As Long, outp As Long,  _
logMax As Long, logRow As Long, rMax As Long, rRow As Long
StartDatum = DatumInOut.datumvon
EndDatum = DatumInOut.datumbis
Set wsinout = ActiveWorkbook.Sheets("InputOutput")
Set wslog = ActiveWorkbook.Sheets("LogImport")
wsinout.Cells.Clear
For i = 1 To 4
Set wsroh = ActiveWorkbook.Sheets("R" & i)
With wsroh
'Anzahl der Zeilen in LogImport ermitteln
rMax = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
For rRow = 2 To rMax
If .Cells(rRow, 15) >= StartDatum And .Cells(rRow, 15)   _
.Cells(rRow + 1, 2) And .Cells(rRow, 9) > 0 Then inp = inp + 1
Next rRow
End With
Next i
With wslog
'Anzahl der Zeilen in LogImport ermitteln
logMax = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
For logRow = 2 To logMax
'If .Cells(logRow, 11) >= StartDatum And .Cells(logRow, 11)  .Cells(logRow + 1, 2) And .Cells(logRow, 9) > 0 Then inp = inp + 1
If .Cells(logRow, 11) >= StartDatum And .Cells(logRow, 11)  .Cells(logRow + 1, 2) Then outp = outp + 1
Next logRow
End With
MsgBox ("Input: " & inp)
MsgBox ("Output: " & outp)
End Sub
BspDatei:
https://www.herber.de/bbs/user/125519.xlsx
Also es ist schon offensichtlich dass ein SVerweis sinnvoll wäre, nach dem Sinne, wenn im Ausgabeblatt der Wert aus Spalte A schon vorhanden ist, dann addiere um 1, sonst füge den Wert ins Ausgabeblatt.
Nur kriege ich das nicht umgesetzt, zu wenig SVerweis Erfahrungen.
Kann mir jmd einen Denkanstoß geben?
Freundliche Grüße
Burak

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Teilerfolg
20.11.2018 13:20:55
Burak
Also bin einen Schritt weiter, wenn er den Wert nicht findet, dann schreibt er in rein und zählt dementsprechend.
Das Problem ist jetzt nur noch, dass wenn er den Wert gefunden hat, den Zähler nicht in der gefundenen Zeile erhöht sondern in der letzten Zeile.
Wie kann ich sagen dass er statt
Else
wsinout.Cells(inoutRow - 1, 2) = wsinout.Cells(inoutRow - 1, 2) + 1

Else
wsinout.Cells(Zeile mit gefundenem Wert, 2) = wsinout.Cells(Zeile mit gefundenem Wert, 2) + 1
machen soll?
For i = 1 To 4
Set wsroh = ActiveWorkbook.Sheets("R" & i)
With wsroh
'Anzahl der Zeilen in LogImport ermitteln
rMax = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
For rRow = 2 To rMax
If .Cells(rRow, 15) >= StartDatum And .Cells(rRow, 15)   _
.Cells(rRow + 1, 2) And .Cells(rRow, 9) > 0 Then
varret = Application.Match(.Cells(rRow, 1), wsinout.Columns(1), 0)
If Not IsNumeric(varret) Then
wsinout.Cells(inoutRow, 1) = .Cells(rRow, 1)
wsinout.Cells(inoutRow, 2) = wsinout.Cells(inoutRow, 2) + 1
inoutRow = inoutRow + 1
Else
wsinout.Cells(inoutRow - 1, 2) = wsinout.Cells(inoutRow - 1, 2) + 1
End If
End If
Next rRow
End With
Next i

Anzeige
erledigt, nicht optimal aber funktioniert. o.w.T.
20.11.2018 13:52:43
Burak

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige