Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Zahlen suchen in 7 Spalten

Forumthread: Zahlen suchen in 7 Spalten

Zahlen suchen in 7 Spalten
09.07.2025 11:59:55
mckater
Servus aus dem Ösiland an die Excelgemeinde!

Irgendwie stehe ich wieder an meiner Grenze mit VBA in Excel!
Da braucht es die sehr guten Excel Freaks!

Was ist mein Problem?
Ich habe einen Code geschrieben, welcher überprüft jede Zeile nach Kriterien die zutreffen.
Jedes Kriterium also criterial1 gehört der Spalte A, criterial2 der Spalte B usw....
Ich will aber was anderes, dass criterial1 vorerst alle Spalten durchsucht nach der gewünschten Zahl und dann geht es zu criteria2 zur nächsten und untersucht diese auf eine Gültigkeit....geht dann weiter bis criteria7 und dann will ich eine 1 stehen haben, weil Treffer!

Mein Problem ist also nicht mit dem Code Zahlen von 1 bis 7 anzugeben und bekomme einen Treffer!
Aber würde ich die Zahlen umdrehen von 7 bis 1, bekomme ich natürlich die Null, weil der Code ja nur criteria1 in Spalte A prüft usw.
Ich würde aber gerne das die erste Zahl in alle sieben Spalten geprüft werden und dann geht es weiter mit criteria2 usw.

Beispiel1: ich habe die Zahlen 1, 2, 3, 4, 5, 6, 7
criteria1 = 1, criteria2 = 2 usw.

Ich bekomme dann die EINS in der Ausgabe, was super ist.
Aber wenn ich die Zahlen umdrehe von Anfang 7 bis zur 1 bekomme ich natürlich die NULL, weil criteria1 ja nur für Spalte A zuständig ist.

Aber ich will das die criteria1 gleich 7 Spalten durchsucht und dann weitergeht auf die criteria2 und das auch macht wie bis criteria7
Sozusagen, wenn alle Zahlen richtig erfüllt sind, egal welche Spalte, bekomme ich die 1 in der Ausgabe.
Also wenn ich Zahlen angebe mit 1,2,3,4,5,6,7 = Treffer
Wenn ich aber sie tausche, bekomme ich die Null und will im Grunde...wenn eine Zeile alle Zahlen hat mit den Kriterien muss es auch eine eins geben in der Ausgabe.

Das ist mein großes Problem!

Im Prinzip soll das criteria1 alle 7 Spalten nach Richtigkeit untersuchen in einer Schleife, bei Treffer gut und dann geht es weiter zu criteria2 usw....wenn alles passt, egal wo sich die Zahl befindet ergibt es eine Lösung oder?
Wird wohl eine sehr lange Schleife oder?

Ich bin da echt ratlos derzeit, wie man das anders umsetzt und grüble schon so lange.

LG mckater

https://www.herber.de/bbs/user/178045.xlsm
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 12:19:13
cysu11
Hi,

ich würde das so ändern:

If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria1) > 0 Then

und für alle Kriterien auch. ;)

LG, Alexandra
AW: Zahlen suchen in 7 Spalten
09.07.2025 12:55:20
daniel
Hi

wenn es "egal" ist, in welcher Spalte ein Kriterium steht, dann gib den Zellbereich so an:

If Application.WorksheetFunction.CountIf(ws.Range("A:G").Rows(i), criteria1) > 0 Then

oder so:

If Application.WorksheetFunction.CountIf(ws.Range(ws.cells(i,1), ws.cells(i, 7)), criteria1) > 0 Then

gruß Daniel
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 16:54:09
mckater
Danke! Es war super wie es klappt und ist wow wie man so geilen Code schreiben kann.
Ich habe es so gemacht und funktioniert und klappt super!
Könnte man die einzelen criteria1,criteria2,criteria3 usw, auf eine Zelle im Tabellenblatt zuweisen können.
Also criteria1 wäre A10, criteria2 wäre A11, criteria3 wäre A12, usw.
Dann muss ich die Daten nicht im Code eingeben und im Excel in den Zellen, was einfacher wäre.

Danke für den super Code!
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 18:23:15
mckater
Danke!!!!
AW: Zahlen suchen in 7 Spalten
09.07.2025 18:28:35
mckater
super dein Tipp und kaum zu glauben wie gut ihr seid
AW: Zahlen suchen in 7 Spalten
09.07.2025 17:29:20
cysu11
Hi,

dann so:

criteria1 = ws.Range("A10").value
criteria2 = ws.Range("A11").value
etc.

LG, Alexandra
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 19:21:55
daniel
Hi

wenn du die Kriterien in einem Zellbereich hast, kannst du eine Schleife über diesen Zellbereich (A10:A16) laufen lassen und hier die Kriterien prüfen.

Sub CountMultipleCriteriaLoop()

Dim ErgGesamt As Long
Dim z As Long
Dim crt As Range

With Sheets("Zahlenkombinationen")


For z = 1 To 2
For Each crt In .Range("A10:A16").Cells
If WorksheetFunction.CountIf(.Range("A:G").Rows(z), crt.Value) = 0 Then Exit For
Next
If crt Is Nothing Then ErgGesamt = ErgGesamt + 1
Next
End With

MsgBox "Anzahl der Zeilen, die IHRE Kriterien erfüllen: " & ErgGesamt

End Sub


die Prüfung, ob alle Kriterien erfüllt sind, wird hier so gemacht:
- wenn ein Kriterium nicht erfüllt ist, wird die Schleife vorzeitig abgebrochen, dh nur wenn alle Kriterien erfüllt sind, läuft die Schleife vollständig durch.
- ob eine Schleife vollständig durchlaufen wurde, dann man am Schleifenzähler feststellen. Hier haben wir eine "For Each - Objektschleife", dh die Schleife läuft über alle Einzelobjekte der Gruppe, dh hier über alle Zellen des angegebenen Zellbereichs.
wird die Schleife abgebrochen, so enthält der Schleifenzähler (crt) die Zelle, bei der abgebrochen wurde.
wird die Schleife vollständig durchlaufen, dann ist der Schleifenzähler leer.
Das kann man wie gezeigt abfragen und spart sich somit einen Zähler oder eine weitere Prüfvariable.

Gruß Daniel
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 13:08:22
Yal
Moin,

wenn Du deine Kriterien nicht in je einer benannte Variable, sondern einen Array ablegst, kannst Du darauf eine Schleife bauen:

Sub test()

Dim i As Long, c As Long
Dim Crit(1 To 7) As Integer

For i = 1 To 7
Crit(i) = i 'oder was anderes
Next
For i = 7 To 1 Step -1
For c = Zeile1 To Zeile2 'Zeile 1 und Zeile2 sind zu definieren
If Application.WorksheetFunction.CountIf(ws.Range("A:G").Rows(c), Crit(i)) > 0 Then 'entsprechend Vorschlag von Daniel
'...
End If
Next
End Sub


VG
Yal
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 13:17:22
GerdL
Moin
Sub Unit()


Dim Bereich As Range, i As Long, ct As Long

Set Bereich = Range("a1:g1")

For i = 1 To 3
ct = ct + WorksheetFunction.CountIf(Bereich, 1) * _
WorksheetFunction.CountIf(Bereich, 2) * _
WorksheetFunction.CountIf(Bereich, 3) * _
WorksheetFunction.CountIf(Bereich, 4) * _
WorksheetFunction.CountIf(Bereich, 5) * _
WorksheetFunction.CountIf(Bereich, 6) * _
WorksheetFunction.CountIf(Bereich, 7)
MsgBox "Zeile " & i & ": " & WorksheetFunction.CountIf(Bereich, 1) * _
WorksheetFunction.CountIf(Bereich, 2) * _
WorksheetFunction.CountIf(Bereich, 3) * _
WorksheetFunction.CountIf(Bereich, 4) * _
WorksheetFunction.CountIf(Bereich, 5) * _
WorksheetFunction.CountIf(Bereich, 6) * _
WorksheetFunction.CountIf(Bereich, 7)
Set Bereich = Bereich.Offset(1, 0)
Next
MsgBox "gesamte: " & ct

End Sub

Gruß Gerd
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 12:34:49
mckater
Das schaut nach einer sehr guten Lösung aus, aber der Code überprüft jetzt sicher nur SpalteA wie Spalte G
Also müsste ich die Spalten ergänzen mit
If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 2), Cells(i, 3)), Cells(i, 4), Cells(i, 5), , Cells(i, 6), Cells(i, 7) criteria1) > 0 Then

und dann weiter mit criteria2:
If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 2), Cells(i, 3)), Cells(i, 4), Cells(i, 5), , Cells(i, 6), Cells(i, 7) criteria2) > 0 Then

habe ich DICH da richtig verstanden oder muss ich noch üben ob das funktioniert?
Natürlich müsste ich die Klammern noch ergänzen oder da hinten pro Cells oder?

LG mckater
Anzeige
AW: Zahlen suchen in 7 Spalten
13.07.2025 12:35:38
mckater
Das Problem bei meinem Code liegt daran,....erkennt eine 5 oder auch eine 15 und ich will nur die reinen Zahlen ermitteln. sprich, eine 5 wird als 5 gezählt und eine 15 nicht als 5 sondern eine 15 usw.
AW: Zahlen suchen in 7 Spalten
09.07.2025 13:12:38
cysu11
Hi,
ich meinte das so:

Option Explicit


Sub CountMultipleCriteriaLoop()

Dim ws As Worksheet
Dim count As Long
Dim cell As Range
Dim criteria1 As Variant, criteria2 As Variant, criteria3 As Variant, criteria4 As Variant, criteria5 As Variant, criteria6 As Variant, criteria7 As Variant
Dim i As Long

' Arbeitsblatt definieren
Set ws = ThisWorkbook.Sheets("Zahlenkombinationen")

' Kriterien definieren
criteria1 = "1" ' Erstes Kriterium was erfüllt werden muss in der ersten Spalte
criteria2 = "2" ' Zweites Kriterium was erfüllt werden muss in der zweiten Spalte
criteria3 = "3" ' Drittes Kriterium was erfüllt werden muss in der dritten Spalte
criteria4 = "4" ' Viertes Kriterium was erfüllt werden muss in der vierten Spalte
criteria5 = "5" ' Fünftes Kriterium was erfüllt werden muss in der fünften Spalte
criteria6 = "6" ' Sechstes Kriterium was erfüllt werden muss in der sechsten Spalte
criteria7 = "7" ' Siebtes Kriterium was erfüllt werden muss in der siebten Spalte




count = 0

' Zähler initialisieren

' Schleife durch die Zeilen iterieren
For i = 1 To 2 ' Überprüft wird die Schleife von Zeile 1 bis 2

' Spalten definieren (A, B, C usw. Spalte)
Set cell = ws.Cells(i, 1) ' Erste Spalte (A)

' Erstes Kriterium prüfen
If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria1) > 0 Then
'MsgBox Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria1)
' Zweites Kriterium prüfen
If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria2) > 0 Then
' Zähler erhöhen, wenn beide Kriterien erfüllt sind

If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria3) > 0 Then
' Zähler erhöhen, wenn alle drei Kriterien erfüllt sind

If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria4) > 0 Then
' Zähler erhöhen, wenn alle vier Kriterien erfüllt sind

If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria5) > 0 Then
' Zähler erhöhen, wenn alle fünf Kriterien erfüllt sind

If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria6) > 0 Then
' Zähler erhöhen, wenn alle sechs Kriterien erfüllt sind

If Application.WorksheetFunction.CountIf(ws.Range(Cells(i, 1), Cells(i, 7)), criteria7) > 0 Then
' Zähler erhöhen, wenn alle sieben Kriterien erfüllt sind




count = count + 1

End If
End If
End If
End If
End If

End If
End If
Next i

' Ergebnis anzeigen
MsgBox "Anzahl der Zellen, die IHRE Kriterien erfüllen: " & count

End Sub


LG, Alexandra
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 13:20:51
daniel
das funktioniert so nur, wenn ws das aktive Sheet ist.
Cells ohne Tabellenblattangabe davor referenziert immer auf das aktive Sheet
Wenn die Range auf ein anderes Tabellenblatt referenzieren soll als die Cells, die sie definieren, dann bekommst du einen Fehler.

Falsch ist: ws.Range(Cells(i, 1), Cells(i, 7))
Richtig ist: Range(ws.Cells(i, 1), ws.Cells(i, 7))

Gruß Daniel
Anzeige
AW: Zahlen suchen in 7 Spalten
09.07.2025 13:29:46
GerdL
Moin
Cells ohne Tabellenblattangabe davor referenziert immer auf das aktive Sheet,
wenn die Prozedur in einem Standardmodul steht, im Tabellenblattmodul auf dieses.
Gruß Gerd

Forumthreads zu verwandten Themen