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

Counts

Counts
09.07.2020 09:35:03
Anni
Hallo,
ich versuche mich gerade an einem Makro, dass Einträge von 2 Spalten zählt. Beispiel Datei wie die Spalten aussehen und was es als Ergebnis anzeigen soll ist angefügt.
https://www.herber.de/bbs/user/138894.xlsm
Folgende Probleme habe ich bei der Version Counts
Es zählt zwar die Einträge der Spalten aber vergleicht nicht gleichzeitig mit Spalte 3 und schreibt daher nichts in die Ergebnistabelle
Sub Counts()
Dim i As Long
Dim IntNCount As Integer, IntICount As Integer
Dim FinalRow As Long
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow + 1
If Cells(i, 1)  "" And Cells(i + 1, 2) = "" Then
IntNCount = IntNCount + 1
ElseIf Cells(i + 1, 2)  "" Then
IntICount = IntICount + 1
' Teil wird immer übersprungen
If Cells(i, 3).Value  "" Then
Cells(4, 5).Value = IntNCount
Cells(4, 6).Value = IntICount
IntICount = 0
IntNCount = 0
End If
End If
Next i
End Sub
Bei Variante2 zählt es die Werte von Spalte 1 richtig und würde sie auch eintragen aber die Werte von Spalte 2 werden gezählt aber nicht mit Spalte 3 abgeglichen und demnach nicht eingetragen.
Sub Countszwei()
Dim i As Long
Dim IntNCount As Integer, IntICount As Integer
Dim FinalRow As Long
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow + 1
If Cells(i, 1)  "" And Cells(i + 1, 2) = "" Then
IntNCount = IntNCount + 1
If Cells(i, 3).Value  "" Then
Cells(4, 5).Value = IntNCount
IntNCount = 0
End If
End If
Next i
For i = 2 To FinalRow + 1
If Cells(i + 1, 2)  "" Then
IntICount = IntICount + 1
'nur abgleich Spalte 3 wenn wert  "" sollte aber in jeder Zeile abgleichen
If Cells(i, 3).Value  "" Then
Cells(4, 6).Value = IntICount
IntICount = 0
End If
End If
Next i
End Sub
Außerdem habe ich noch nicht raus bekommen wie er in der Ergebnistabelle immer eine Zeile weiter springen könnte, damit das Ergebnis des Bereiches davor nicht immer überschrieben wird.
Hat jemand eine Idee wie das alles funktionieren könnte?
Danke im Voraus!
Anni

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Counts
09.07.2020 10:04:29
MCO
Hallo Anni!
Sorry, aber ich kann der Logik der Zahlen in Spalte B nicht folgen. Ich bin sicher dass du beim kopieren der Schleife eine Variable /Bedingung anpassen mußt.
Die Ergebnisse untereinanderzuschreiben geht so:

Sub Countszwei()
Dim i As Long
Dim IntNCount As Integer, IntICount As Integer
Dim FinalRow As Long
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow + 1
If Cells(i, 1)  "" And Cells(i + 1, 2) = "" Then
IntNCount = IntNCount + 1
If Cells(i, 3).Value  "" Then
Cells(Cells(Rows.Count, 5).End(xlUp).Row + 1, 5).Value = IntNCount
IntNCount = 0
End If
End If
If Cells(i + 1, 2)  "" Then
IntICount = IntICount + 1
If Cells(i, 3).Value  "" Then
Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 6).Value = IntICount
IntICount = 0
End If
End If
Next i
End Sub

-EF
2Ergebnisse
3Counts ACounts B
483
59
611

Gruß, MCO
Anzeige
AW: Counts
09.07.2020 10:26:35
Anni
Danke für den Tipp
Der Sinn hinter dem ganzen:
In Spalte C steht ein Wert
Bereich vom letzten Wert in Spalte C bis zum aktuellen Wert der Spalte C wird überprüft
und die Einträge in Spalte A und B gezählt.
Anschließend in Ergebnistabelle geschrieben.
Also von beispielsweise C10 bis C22 werden die Counts von A und B ausgelesen. Also in Spalte A = 9 und Spalte B=2
dann werden für nächsten Bereich von C23-C33 die Werte gezählt. Also A = 11 B = 0

ich hoffe so ist es verständlicher.
Gruß Anni
AW: Counts
09.07.2020 10:53:56
Anni
Habe es hinbekommen mit:
Sub Countszwei()
Dim i As Long
Dim IntNCount As Integer, IntICount As Integer
Dim FinalRow As Long
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow + 1
If Cells(i, 1)  "" And Cells(i + 1, 2) = "" Then
IntNCount = IntNCount + 1
If Cells(i, 3).Value  "" Then
Cells(Cells(Rows.Count, 5).End(xlUp).Row + 1, 5).Value = IntNCount
IntNCount = 0
Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 6).Value = IntICount
IntICount = 0
End If
End If
If Cells(i + 1, 2)  "" Then
IntICount = IntICount + 1
If Cells(i + 1, 3).Value  "" Then
Cells(Cells(Rows.Count, 5).End(xlUp).Row + 1, 5).Value = IntNCount
IntNCount = 0
Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 6).Value = IntICount
IntICount = 0
End If
End If
Next i
End Sub
danke für deine Hilfe:)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige