Anzeige
Archiv - Navigation
1928to1932
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

VBA, brauche einen Zähler :-)

VBA, brauche einen Zähler :-)
21.04.2023 10:06:04
Fred


Hallo Excel Experten,
in meinem Makro habe ich in Sheet"Listen eine Liste in Spalte "A"
In Sheet "Import" den Spalten "G&I" Werte.
Kann das untere Makro bitte dahin geändert werden, das wenn der Begriff aus Sheet "Listen" zum 4mal in Spalte "G" gefunden wird, das Ergebnis in Listen eingetragen wird und fortgefahren wird?
Also sowas wie einen Zähler.

Sub zaehle_0_0()
    Dim listenSheet As Worksheet
    Dim importSheet As Worksheet
    Dim listenRange As Range
    Dim importRange As Range
    Dim listenCell As Range
    Dim importCell As Range
    Dim name As String
    Dim count As Integer
    
    ' Set references to the worksheets and ranges
    Set listenSheet = ThisWorkbook.Worksheets("Listen")
    Set importSheet = ThisWorkbook.Worksheets("Import")
    Set listenRange = listenSheet.Range("A2:A" & listenSheet.Cells(listenSheet.Rows.count, "A").End(xlUp).Row)
    Set importRange = importSheet.Range("G1:I" & importSheet.Cells(importSheet.Rows.count, "G").End(xlUp).Row)
    
    ' Loop through the names in the Listen sheet
    For Each listenCell In listenRange
        name = listenCell.Value
        count = 0
        
        ' Loop through the names in the Import sheet
        For Each importCell In importRange.Columns(1).Cells
            If importCell.Value = name And importCell.Offset(0, 2).Value = "0-0" Then
                count = count + 1
            End If
        Next importCell
        
        ' Write the count to the Listen sheet
        listenCell.Offset(0, 1).Value = count
    Next listenCell
End Sub



Gruß
Fred

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA, brauche einen Zähler :-)
21.04.2023 10:21:54
MCO
Moin Fred!

Ändere den hinteren Teil wie folgt
        For Each importCell In importRange.Columns(1).Cells
            If importCell.Value = name And importCell.Offset(0, 2).Value = "0-0" Then
                count = count + 1
                if count = 4 then
                      ' Write the count to the Listen sheet
                       listenCell.Offset(0, 1).Value = count 'hier dein "Ergebnis"
                       exit for
               end if
            End If
        Next importCell
    Next listenCell
End Sub
Leider hast du nicht beschrieben, was "Ergebnis" sein soll, denn der Zähler ist ja jetzt mit 4 festgelegt. Darum hab ich das mal stehen lassen.
Es passiert auch nix, wenn der zähler nicht 4 erreicht. Ist das Absicht?
Gruß, MCO


Anzeige
AW: VBA, brauche einen Zähler :-)
21.04.2023 10:45:16
Fred
Hallo MCO,
in "Listen" soll die Liste abgearbeitet werden.
Es soll gezählt werden, wie oft der Wert "0-0" in Spalte "I" steht, wenn in Spalte "G" der Wert identisch mit dem in "Listen" ist. Wird in Sheet "Import", Spalte "G" der gesuchte Wert zum 4x gefunden, soll die gezählte (passende) Anzahl von "0-0" eingetragen werden. In deinem Makro erfolgt leider kein Eintrag. In meinem ursprünglichen Makro wurden die "0-0" korrekt gezählt (wenn Wert Spalte "G" passt),- allerdings wurde die komplette Tabelle in "Import" durchgegangen und nicht nur bis zum 4. gefundenen Wert in Spalte "G"

Kannst du das entsprechend ändern?

Gruss
Fred


Anzeige
AW: VBA, brauche einen Zähler :-)
21.04.2023 11:04:47
Fred
pfff,
auch das Makro funzt nicht:
Sub zaehle_0_0()
Dim listenSheet As Worksheet
Dim importSheet As Worksheet
Dim listenRange As Range
Dim importRange As Range
Dim listenCell As Range
Dim importCell As Range
Dim name As String
Dim count As Integer

Set listenSheet = ThisWorkbook.Worksheets("Listen")
Set importSheet = ThisWorkbook.Worksheets("Import")
Set listenRange = listenSheet.Range("A2:A" & listenSheet.Cells(listenSheet.Rows.count, "A").End(xlUp).Row)

For Each listenCell In listenRange
    name = listenCell.Value
    count = 0
    
    For Each importCell In importSheet.Range("G1:G" & importSheet.Cells(importSheet.Rows.count, "G").End(xlUp).Row)
        If importCell.Value = name Then
            If importCell.Offset(0, 2).Value = "0-0" Then
                count = count + 1
                If count = 4 Then
                    listenCell.Offset(0, 1).Value = count
                    Exit For
                End If
            End If
        End If
    Next importCell
    
    listenCell.Offset(0, 1).Value = count
Next listenCell
End Sub
was mache ich da falsch?

Gruss
Fred


Anzeige
AW: VBA, brauche einen Zähler :-)
21.04.2023 11:08:03
MCO
Versteht ich das richtig?

Zählen soll er alle, eintragen aber nur, wenn >=4?

Dann ändere in deinem Originalcode

         ' Write the count to the Listen sheet
         listenCell.Offset(0, 1).Value = count
in
         ' Write the count to the Listen sheet
         If count >= 4 Then listenCell.Offset(0, 1).Value = count
Im Ergebnis sieht´s dann so aus



-AB
1
2a6
3b
4c4
5d6
6e6
7f
8g4
9h
10i
11j


Gruß, MCO


Anzeige
AW: VBA, brauche einen Zähler :-)
21.04.2023 11:11:40
Fred
Hallo MCO,
nein! Er soll alle "0-0" zählen, bis zum 4. identischen (gesuchten) Eintrag in Spalte "G"


AW: VBA, brauche einen Zähler :-)
21.04.2023 11:21:05
onur
....
For Each listenCell In listenRange
    name = listenCell.Value
    count = 0
    For Each importCell In importSheet.Range("G1:G" & importSheet.Cells(importSheet.Rows.count, "G").End(xlUp).Row)
        If importCell.Value = name Then
            If importCell.Offset(0, 2).Value = "0-0" Then
                count = count + 1
            End If
        End If
    Next importCell
    listenCell.Offset(0, 1).Value = count
    If count = 4 Then Exit For
Next listenCell
End Sub


Anzeige
brauche einen Zähler, Bsp-Mappe
21.04.2023 11:30:10
Fred
Hallo Onur,
auch deine Korrektur zeigt alle "0-0" an,- auf der ganzen Tabelle. Wollte aber nur die Anzahl der "0-0", bis zum 4. passenden Eintrag in Spalte "G"
Beispielmappe:
https://www.herber.de/bbs/user/158820.xlsb
Gruss
Fred


AW: brauche einen Zähler, Bsp-Mappe
21.04.2023 11:37:54
onur
"Wollte aber nur die Anzahl der "0-0", bis zum 4. passenden Eintrag in Spalte "G""???
Was ist das für ein Ergebnis? Was sagt die 1 konkret aus? Mal ganz ohne Excel-Fachwörter für einen Aussenstehenden.


Anzeige
AW: brauche einen Zähler, Bsp-Mappe
21.04.2023 11:42:26
Fred
Hallo Onur,
es ist die 2
bin nun auch ein bischen durcheinander.
Die 2 sagt aus, das in den ersten 4 Spielen von Magdeburg (in der Tabelle), 2x das "0-0" vorkommt.


AW: brauche einen Zähler, Bsp-Mappe
21.04.2023 11:43:43
Fred
.. in den ersten 4 Heimspielen!


AW: brauche einen Zähler, Bsp-Mappe
21.04.2023 11:50:32
MCO
So ne Beispielmappe zu Anfang wäre ein TRAUM gewesen.
Wer soll denn da durchblicken?!

So klappt´s denn auch mit den Magdeburgern....

Sub zaehle_0_0()
    Dim listenSheet As Worksheet
    Dim importSheet As Worksheet
    Dim listenRange As Range
    Dim importRange As Range
    Dim listenCell As Range
    Dim importCell As Range
    Dim name As String
    Dim count As Integer
    
    ' Set references to the worksheets and ranges
    Set listenSheet = ThisWorkbook.Worksheets("Listen")
    Set importSheet = ThisWorkbook.Worksheets("Import")
    Set listenRange = listenSheet.Range("A2:A" & listenSheet.Cells(listenSheet.Rows.count, "A").End(xlUp).Row)
    Set importRange = importSheet.Range("G1:I" & importSheet.Cells(importSheet.Rows.count, "G").End(xlUp).Row)
    
    ' Loop through the names in the Listen sheet
For Each listenCell In listenRange
    name = listenCell.Value
    count = 0
    count2 = 0
    For Each importCell In importSheet.Range("G1:G" & importSheet.Cells(importSheet.Rows.count, "G").End(xlUp).Row)
        If importCell.Value = name Then
            count = count + 1
            If importCell.Offset(0, 2).Value = "0-0" Then count2 = count2 + 1
        End If
        If count = 4 Then listenCell.Offset(0, 4).Value = count2: Exit For
    Next importCell
Next listenCell
End Sub

Gruß, MCO


Anzeige
AW: brauche einen Zähler, Bsp-Mappe
21.04.2023 12:00:47
Fred
Hallo MCO,
jjaaaAAAAAHHRRRR !!!
DANKE!
Ich habe schon ein schlechtes Gewissen bekommen, weil ich mit meiner Frage den "Herber-Chat" voll-tapeziert hatte.
Nun mache ich mich mal an die Lösung, wenn zB Magdeburg gesucht wird, dies nicht nur bei den Heimspielen sondern die ersten 4 inclusive der Gastspiele (Spalte "H")
Wenn ich nicht drauf komme, fürchte ich, das ich mich nochmals melde.
Nochmals vielen Dank Dir und Onur!

Gruss
Fred


AW: brauche einen Zähler, Bsp-Mappe
21.04.2023 12:38:25
MCO
Hallo Fred!

Bitte dann aber direkt mit Beispielmappe.
In deiner Beschreibung sprichst du nur von der 2ten Spalte, die mit einbezogen wird. Ändert sich auch das mit dem 4ten Spiel? oder sind es dann 8?

Ich hatte zuerst nur den Suchbereich erweitert, dann wird aber spaltenweise abgearbeitet. Jetzt hab ich beide Felder (Heim + Gast) sofort mit einbezogen.

Ach ja: die Bereichsbegrenzung hab ich vereinfacht und die benannten Ranges auch in der Suche berücksichtigt.
Offset hab ich vermieden wo es ging.
Schau mal, wie du klarkommst.
Sub zaehle_0_0()
    Dim listenSheet As Worksheet
    Dim importSheet As Worksheet
    Dim listenRange As Range
    Dim importRange As Range
    Dim listenCell As Range
    Dim importCell As Range
    Dim count As Integer
    Dim count2 As Integer
    
    ' Set references to the worksheets and ranges
    Set listenSheet = ThisWorkbook.Worksheets("Listen")
    Set importSheet = ThisWorkbook.Worksheets("Import")
    Set listenRange = listenSheet.Range("A:A").SpecialCells(xlCellTypeConstants)
    Set importRange = importSheet.Range("G:G").SpecialCells(xlCellTypeConstants)
    
    ' Loop through the names in the Listen sheet
    For Each listenCell In listenRange
        count = 0
        count2 = 0
        For Each importCell In importRange
            If importCell = listenCell Or importCell.Offset(0, 1) = listenCell Then
                count = count + 1
                If importSheet.Cells(importCell.Row, "I") = "0-0" Then count2 = count2 + 1
            End If
            If count = 4 Then listenCell.Offset(0, 4).Value = count2: Exit For
        Next importCell
    Next listenCell
End Sub
Gruß, MCO


Anzeige
AW: MCO, Zähler, klappt
21.04.2023 13:01:31
Fred
Hallo MCO,
auch dieses Makro funzt wie gewünscht,- zeigt die "0-0" der ersten 4 Spiele für Heimspiele und Auswärtsspiel,- Spalten "G&H".
Gut das du von selbst dir nochmals die Mühe gemacht hast, auf die neue Aufgabe eingegangen bist.
Ich hatte mal wieder Probleme!
zuerst dachte ich, das ich die Variable importRange im Makro ändere, damit sie die Spalten "G" und "H" einschließt,
statt
Set importRange = importSheet.Range("G1:I" & importSheet.Cells(importSheet.Rows.Count, "G").End(xlUp).Row)
nun dieser
Set importRange = importSheet.Range("G1:H" & importSheet.Cells(importSheet.Rows.Count, "G").End(xlUp).Row)
.. war aber nichts.
Dann komplett anders:
Sub zaehle_0_0_ersten4Heim_Gast()
    Dim listenSheet As Worksheet
    Dim importSheet As Worksheet
    Dim listenRange As Range
    Dim importRange As Range
    Dim listenCell As Range
    Dim importCell As Range
    Dim name As String
    Dim count As Integer
    
     Set listenSheet = ThisWorkbook.Worksheets("Listen")
    Set importSheet = ThisWorkbook.Worksheets("Import")
    Set listenRange = listenSheet.Range("A2:A" & listenSheet.Cells(listenSheet.Rows.count, "A").End(xlUp).Row)
    Set importRange = importSheet.Range("G1:I" & importSheet.Cells(importSheet.Rows.count, "G").End(xlUp).Row)
    
    For Each listenCell In listenRange
        name = listenCell.Value
        count = 0
        count2 = 0
        For Each importCell In importRange
            If importCell.Offset(0, -1).Value = name And importCell.Offset(0, 1).Value = "0-0" Then
                count = count + 1
                If count = 4 Then
                    If importCell.Offset(0, 1).Value = "0-0" Then count2 = count2 + 1
                End If
            End If
            If count = 4 Then listenCell.Offset(0, 1).Value = count2: Exit For
        Next importCell
    Next listenCell
End Sub
war erstmal überhaupt nichts!
Nun haste aber bereits die Lösung geschrieben und ich übernehme es so!
Nun mache ich mal Pause!
Vielen Dank für deine Kompetenz!!

Gruss
Fred


Anzeige
AW: brauche einen Zähler, Bsp-Mappe
21.04.2023 11:57:44
onur
Du zählst nur, wenn Name UND Ergebnis stimmt? NUR NAME wäre richtig.
Set importRange = importSheet.Range("G1:I" ...
Wieso bis I??? Da steht kein Name drin.
importCell.Offset(0, 2).Value = "0-0" Then ???
OFFSET ist Quatsch, du suchst doch immer in Spalte I !

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige