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

Suchen

Suchen
13.04.2016 12:48:17
Gregor
Hallo
In Spalte x suche ich mit vba nach den Begriffen in Spalte y (For to). In Spalte y können dieselben Suchbegriffe mehrmals vorkommen, ich will in Spalte x aber nur einmal danach suchen. Das heisst, nach dem 1. Mal müssen diese Suchbegriffe ignoriert werden. Ich darf aber die Spalte y nicht filtern oder ändern.
Wie kann ich das mit vba lösen (Teil eines Makros)?
Vielen Dank und Gruss
Gregor

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen
13.04.2016 13:40:54
UweD
Hallo
Hier ein Ansatz um das 1. Auffinden zu prüfen.
Suchen:
- kommst du damit klar?
- was soll beim Auffinden passieren?

Sub fggfg()
Dim Z, Sp As Integer
Sp = 25 'Spalte Y
For Each Z In Columns(Sp).SpecialCells(xlCellTypeConstants, 3)
If WorksheetFunction.CountIf(Range(Cells(1, Sp), Cells(Z.Row, Sp)), Z) = 1 Then
'deine Suche
End If
Next
End Sub
Gruß UweD

AW: Suchen
13.04.2016 14:49:00
Gregor
Hoi Uwe
Vorab mal vielen Dank.
In der Spalte 3 eruiere ich zuerst wie folgt den Suchbegriff:
For Start = 5 To intLastRow
z = Split(.Cells(Start, 3), ",")
Suchbegriff = z(0)
etc.
Anschliessend suche ich in Spalte 4 nach diesem Suchbegriff:
Set sZelle = .Columns(4).Find(what:=Suchbegriff, LookAt:=xlPart, LookIn:=xlValues)
If Not sZelle Is Nothing Then
etc.
Nun können in Spalte 3 die Suchbegriffe mehrmals vorkommen. Sobald zuvor jedoch in Spalte 4 schon einmal nach diesem Begriff gesucht wurde, ist dieser zu ignorieren und mit Next zum nächsten Suchbegriff zu gehen. Usw, usw.
Vielen Dank und Gruss
Gregor

Anzeige
AW: Suchen
13.04.2016 15:27:16
UweD
ungetestet...
Sub fggfg()
Dim intLastRow As Double, Sp As Integer
Sp = 3 'Spalte C
intLastRow = Cells(Rows.Count, Sp).End(xlUp).Row
For Start = 5 To intLastRow
Z = Split(.Cells(Start, Sp), ",")
Suchbegriff = Z(0)
If WorksheetFunction.CountIf(Range(Cells(5, Sp), Cells(Start, Sp)), Suchbegriff) = 1  _
Then
Set sZelle = .Columns(4).Find(what:=Suchbegriff, LookAt:=xlPart, LookIn:=xlValues)
If Not sZelle Is Nothing Then
'... weiter dein Suchen
End If
End If
Next
End Sub
Gruß UweD

AW: Suchen
13.04.2016 16:39:10
Gregor
Hoi Uwe
Danke für den Vorschlag.
Der Suchbegriff wird ja zuvor abstrahiert und beim Suchen mit LookAt:=xlPart vorgenommen. Mit der
If WorksheetFunction.CountIf(Range(Cells(5, Sp), Cells(Start, Sp)), Suchbegriff) = 1 Then
komme ich nicht zum Ziel.
Ich stelle mir vor, dass alle durchgeführten Suchbegriffe in einem temporären Speicher festgehalten werden und jeder neue Suchbegriff vor Ausführung mit diesem Speicher abgeglichen wird. Ich weiss aber nicht, ob es für das mit vba eine Lösung gibt.
Danke und Gruss
Gregor

Anzeige
AW: Suchen
14.04.2016 08:51:03
UweD
Hallo
das muss klappen.
Damit wir geprüft, wie oft in Spalte3 von Zeile 1 bis zu Zeile Start der Wert vorkommt.
Also bein ersten Element von C1 bis C1
beim 2. von C1 bis C2
beim 3. von C1 bis C3
usw.
Ergebnis wäre =1
Irgend kommt ein Wert, der oben schon mal vorgekommen ist. Dann ist das Ergebnis &gt1 und damit wird danach nicht mehr gesucht.
So wie hier in der Tabelle mal gezeigt

Tabelle1
 CDE
1AAA1jetzt verwenden
2BBB1jetzt verwenden
3DDD1jetzt verwenden
4CCC1jetzt verwenden
5AAA2übergehen
6DDD2übergehen
7FFF1jetzt verwenden
8AAA3übergehen

verwendete Formeln
Zelle Formel Bereich N/A
D1=ZÄHLENWENN($C$1:$C1;C1)  
E1=WENN(ZÄHLENWENN($C$1:$C1;C1)>1; "übergehen";"jetzt verwenden")  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.10 einschl. 64 Bit


Gruß UweD
lad doch mal eine abgespeckte Musterdatei hoch mit deinem kompletten Makro.

Anzeige
AW: Suchen
14.04.2016 10:30:05
Gregor
Hallo Uwe
Das Problem ist/war, dass der Suchbegriff bewusst geändert werden muss. Ich lasse nun den modifizierten Suchbegriff in einer separaten Spalte auflisten und vergleiche mit
If WorksheetFunction.CountIf(Range(Cells(5, Sp), Cells(Start, Sp)), Suchbegriff) = 1 Then
diese Spalte. So klappt es und entspricht deinen Erläuterungen oben.
Nochmals vielen Dank für die Hilfe.
Gregor

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige