Im Prinzip geht das schon, ...
20.02.2020 03:03:35
Luc:?
…Jimmy,
aber nur mit VBA, weshalb du wenigstens auch über Basiskenntnisse in VBA verfügen solltest. Außerdem würde ich das nur empfehlen, wenn die davon betroffene ZellAnzahl nicht sehr groß ist (100 geht bestimmt), es sich bei der 2.Tabelle um eine Kopie der 1. handelt und auf nachträgliche (Wert- bzw) TextÄnderungen in einer der beiden Tabellen geprüft wdn soll und im Kopie-PrüfBereich keine weiteren BedingtFormatierungen vorhanden sind. Anderenfalls könnte die Anzahl verarbeitbarer Formatierungen schnell überschritten wdn. Der Vorteil ist, dass das Programm nur dann erneut laufen muss, wenn die Farben in der OriginalTabelle geändert wdn. (Dazu mal ein ProgrammBsp im Anhang, das für jede relevante Zelle der Kopie eine eigene BedingtFormatierung anlegt.)
Aber das ist hier ja nicht dein Problem, sondern die Texte der 2.Tabelle sollen/müssen in der 1.Tabelle gesucht und vgln wdn (Xl-Fkt VERGLEICH, in VBA WorksheetFunction.Match). Das ginge zwar ebenfalls per BedingtFormatierung, ist aber kaum zu empfehlen. Besser wäre hier ein Programm, das die DirektFärbung der beim Vgl in der 1.Tabelle gefundenen Zelle (bzw ihrer Schrift) ausliest und auf die Zelle (bzw Schrift) der 2.Tabelle mit identischem bzw gleichem Inhalt überträgt. Dazu sollte jeder ZellInhalt der 2.Tabelle per .Match mit allen ZellInhalten der 1. vgln wdn, denn dabei dürfte wohl schon 1 Treffer ausreichen (vorausgesetzt, jeder Text kommt in der 1.Tabelle nur maximal 1× vor). So etwas könnten hier etliche pgmmieren, falls sie interessiert sind und du damit zurecht kommen würdest. Anderenfalls könnte man aber auch mit einer Hilfsspalte und Formel …
=WENNFEHLER(VERGLEICH(Tab2!A1;Tab1!A1:A100;0);0)
…feststellen, ob der Text der jeweiligen Tabelle2-Zelle in Tabelle1 vorkommt. In diesem Fall wird in deinem Fall die Position im SpaltenBereich der 1.Tabelle zurückgegeben. Mit dieser Angabe könnte man per INDEX auch auf die dortige Zelle verweisen und per uralter XLM-Fkt ZELLE.ZUORDNEN (nur in .xlsm-Dateien per benannter Formel!) mit 1.Argument =38 bzw 63 den (heute kaum noch ausreichenden) FarbIndex (56 Indizes gesamt) der Zelle auslesen. Man könnte allerdings auch den echten Farbwert auslesen, benötigte dafür aber eine VBA-basierte UDF. Allerdings kann man das nicht in einer manuell erstellten BedingtFormatierung verwenden, es sei denn, man hat die 3 einzelnen RGB-Werte ermittelt. Aber das wäre ohnehin manuell viel zu aufwendig. Mit einer VBA-Subprozedur ist man da besser bedient.
Morhn, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anhang (nur Bsp, nicht für das vorliegende Problem, sondern wie anfangs beschrieben):
Sub bedZFarbKopie()
Const adQBer$ = "A1:B3", naQTaB$ = "Tabelle3"
Dim spx As Long, zlx As Long, qBer As Range, zBer As Range, xZ As Range, _
qTaB As Worksheet
Set qTaB = Worksheets(naQTaB): Set qBer = qTaB.Range(adQBer)
Set zBer = ActiveWindow.RangeSelection
With zBer.FormatConditions
If CBool(.Count) Then .Delete
End With
For Each xZ In zBer
With zBer.Cells(1)
spx = xZ.Column - .Column + 1: zlx = xZ.Row - .Row + 1
End With
With xZ.FormatConditions
.Add xlCellValue, xlEqual, "='" & qTaB.Name & _
"'!" & qBer.Cells(zlx, spx).Address(0, 0)
.Item(1).Interior.Color = qBer.Cells(zlx, spx).Interior.Color
End With
Next xZ
Set qBer = Nothing: Set zBer = Nothing: Set qTaB = Nothing
End Sub