965 Aufrufe
Gefragt in Textverarbeitung von
Hi Leute

Wie kann man mit einem Makro einen Wert(Zahl,Text) einfärben
der auch in einem anderem Arbeitsblatt vorkommt.
Also Tabelle1 A1 mit Text Fisch
vergleichen
Tabelle 2 mit Text Fisch= Gelb einfärben

Hat jemand eine Makro-Idee

lg
Samy

10 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Samy,

muss es mit Makro sein? Das kannst du auch mit bedingter Formatierung lösen.

Weise der Zelle mit dem Suchbegriff in Tabelle1 einen Namen zu, z.B. "Suchbegriff"

In Tabelle 2 kannst du dann mit bedingter Formatierung die Zellen mit dem Suchtext farbig makieren lassen. Steht dein Text, der durchsucht werden soll z.B. in Spalte A, markierst du diese Spalte und wählst dann
Menüband Start - Bedingte Formatierung - Neue Regel - Formel zur Ermittlung der zu formatierenden Zellen verwenden und fügst dann die folgende Formel ein:
=FINDEN(Suchbegriff;A1)>0

Damit wird z.B. das Wort "Fisch" gesucht, Es wird die Groß- und Kleinschreibung berücksichtigt. So wird z.B. Fischerhaus markiert, nicht aber Frischfisch
Soll die Groß- und Kleinschreibung ignoriert werden, so verwende statt FINDEN die Funktion SUCHEN. Der Aufbau ist gleich.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi M.O

Erstmal Danke für den Tipp
Ich würde es aber gerne über ein Makro lösen
Wenn Möglich bist du so nett und schreibst mir bitte ein Makro fürs Suchen.
I

lg
Samy
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Samy,

wie soll den gesucht werden: genaue Übereinstimmung, d.h. Groß- und Kleinschreibung wird beachtet oder Groß- und Kleinschreibung werden nicht beachtet.

Und zur Info: steht der Text nur in einer Spalte oder ist er frei über das Ballt verteilt?

Gruß

M.O.
0 Punkte
Beantwortet von
Hi M.O

Ich brauche es eigentlich nur für Zahlen .d.h genaue
Übereinstimmung

Und die Zahlen sind quer über das Blatt verteilt und sollten
halt farblich markiert werden.

lg
Samy
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Samy,

probier mal das folgende Makro:

Sub Suche()

Dim vDaten As Variant
Dim vSuchbegriff As Variant
Dim lngZeile As Long
Dim lngSpalte As Long

'Suchbegriff einlesen, Namen der Tabelle ggf. anpassen, Suchbegriff steht in Zelle A1
vSuchbegriff = ThisWorkbook.Worksheets("Tabelle1").Range("A1")

'Tabellenblatt, das durchsucht werden soll, Name ggf. Anpassen
With ThisWorkbook.Worksheets("Tabelle2")
'Alle Spalten mit Inhalt des Arbeitsblattes durchlaufen
For lngSpalte = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Column
'Prüfen ob Spalte leer ist
If Application.WorksheetFunction.CountA(Columns(lngSpalte)) > 0 Then
'wenn nicht, dann Inhalt der Spalte in Array einlesen
vDaten = .Range(.Cells(1, lngSpalte), .Cells(.Cells(Rows.Count, lngSpalte).End(xlUp).Row, lngSpalte))
'Nun alle Felder (Zeilen) des Arrays durchlaufen
For lngZeile = LBound(vDaten, 1) To UBound(vDaten, 1)
'falls Übereinstimmung, dann Zelle gelb markieren
If vDaten(lngZeile, 1) = vSuchbegriff Then .Cells(lngZeile, lngSpalte).Interior.ColorIndex = 6
Next lngZeile
End If
Next lngSpalte
End With

End Sub


Kopiere das Makro in ein Standard Modul deiner Arbeitsmappe.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi
M.O

klappt wunderbar, dein Makro kann ich auch andere Stelle gut gebrauchen.
Wenn ich nur von A bis C durchsuchen will und nicht das ganze Blatt
was muss man dann weglassen oder modifizieren.
Ansonsten Top

Danke
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Samy,

freut mich, dass das Makro so arbeitet, wie du dir das vorstellst.

Die Anzahl der Spalten wird in der Zeile
For lngSpalte = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Column

ermittelt.
Willst du nur die Spalten A bis C (1 bis 3) durchlaufen, dann ändere die Zeile wie folgt:
For lngSpalte = 1 To 3


Gruß

M.O.
0 Punkte
Beantwortet von
Hi

M.O

Super Danke eine letzte Frage


For lngSpalte = 1 To 3 .Range(A100:C100)
ist das so korrekt wenn ich nur diesen Bereich durchsuchen will???

lg
Samy
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Samy,

nein, so geht das nicht ;-):

Hier der geänderte Code:

Sub Suche2()

Dim vDaten As Variant
Dim vSuchbegriff As Variant
Dim lngZeile As Long
Dim lngSpalte As Long

'Suchbegriff einlesen, Namen der Tabelle ggf. anpassen, Suchbegriff steht in Zelle A1
vSuchbegriff = ThisWorkbook.Worksheets("Tabelle1").Range("A1")

'Tabellenblatt, das durchsucht werden soll, Name ggf. Anpassen
With ThisWorkbook.Worksheets("Tabelle2")
'Spalten A bis C des Arbeitsblattes durchlaufen
For lngSpalte = 1 To 3
'Prüfen ob Spalte leer ist
If Application.WorksheetFunction.CountA(Columns(lngSpalte)) > 0 Then
'wenn nicht, dann Inhalt der Spalte im Bereich der Zeilen 1 bis 100 in Array einlesen
vDaten = .Range(.Cells(1, lngSpalte), .Cells(100, lngSpalte))
'Nun alle Felder (Zeilen) des Arrays durchlaufen
For lngZeile = LBound(vDaten, 1) To UBound(vDaten, 1)
'falls Übereinstimmung, dann Zelle gelb markieren
If vDaten(lngZeile, 1) = vSuchbegriff Then .Cells(lngZeile, lngSpalte).Interior.ColorIndex = 6
Next lngZeile
End If
Next lngSpalte
End With

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
O.K

Vielen Dank
...