Excel Zellen autom. mit RGB-Wert füllen

Hallo,
haber recht umfangreich gesucht, aber irgendwie noch keine wirkliche Lösung für folgendes Problem gefunden.

Derzeit generiere ich Farbpaletten für das Redesign eines Webauftrittes. Ausgehnend von bereits festgelegten Basifarben habe ich Tabellen (manuell)generiert,die von der Basisfarbe ausgehend 32 verschiedene Tonwerte im HEX-Code enthalten. Diesen habe ich mit einer Formel: =VERKETTEN(HEXINDEZ(TEIL(B32;2;2));"/";HEXINDEZ(TEIL(B32;4;2));"/";HEXINDEZ(TEIL(B32;6;2)))
jeweils in RGB-Werte umgerechnet (Beispiel: #ff6600 wird zu 255/102/0)
So wie in letzterer schreibweise steht der RGB-Wert auch in einer Zelle.
Das manuelle Übertragen der HEX-Codes überleb ich ja noch. Um jetzt den Zellenhintergrund einzufärben, mach ich das ebenfalls manuell, gebe also die RGB-Werte explizit mit der Farbdefinition an. Die jeweils danebenliegende Zelle soll ebenfalls mit der Hintergrundfarbe gefüllt werden.
Bei Bedarf kann ich gerne das Arbeitsblatt zur Verfügung stellen.
Ich dachte, das da eventuell ein Makro oder irgendeine selbstdefinierte Funktion weiterhelfen kann. Oder Hinweise auf Weblinks. Wenn der Anfang mal gemacht ist… ,)

Grüezi Pixelwizard

Derzeit generiere ich Farbpaletten für das Redesign eines
Webauftrittes. Ausgehnend von bereits festgelegten Basifarben
habe ich Tabellen (manuell)generiert,die von der Basisfarbe
ausgehend 32 verschiedene Tonwerte im HEX-Code enthalten.
Diesen habe ich mit einer Formel:
=VERKETTEN(HEXINDEZ(TEIL(B32;2;2));"/";HEXINDEZ(TEIL(B32;4;2));"/";HEXINDEZ(TEIL(B32;6;2)))
jeweils in RGB-Werte umgerechnet (Beispiel: #ff6600 wird zu
255/102/0)
So wie in letzterer schreibweise steht der RGB-Wert auch in
einer Zelle.

OK, damit hast Du dann mal die Daten, die Du weiter verwenden kannst/musst.
Für das automatische Abarbeiten wäre es vermutlich sinnvoll, wenn die einzelnen Werte in je einer eigenen Zelle (letztlich also in 3 Spalten) stehen würden.

Das manuelle Übertragen der HEX-Codes überleb ich ja noch. Um
jetzt den Zellenhintergrund einzufärben, mach ich das
ebenfalls manuell, gebe also die RGB-Werte explizit mit der
Farbdefinition an.

Wie/wo tust Du dies genau?
Mit welcher Excel-Version arbeitest Du denn?

Bis inkl. xl2003 kannst Du gleichzeitig max. 56 Farben in einer Mappe darstellen lassen - das sind die Color-Indizies 1 - 56 die Du in den Optionen im Register ‚Farbe‘ einstellen kannst.

Direkte Zuweisungen an die Zelle per RGB-Werten klappen nur bedingt - Excel wählt dann die am passendsten/ähnlichsten aussehende Farbe aus den 56 definierten aus und verwendet diese, nicht aber die explizit zugewiesenen RGB-Werte.

Die jeweils danebenliegende Zelle soll
ebenfalls mit der Hintergrundfarbe gefüllt werden.
Bei Bedarf kann ich gerne das Arbeitsblatt zur Verfügung
stellen.

Das wäre vermutlich eine gute Idee - am besten zusammen mit einer klaren Beschreibung was wie wo getan werden soll/muss und ev. einem manuell eingefärbten Bereich als Muster. Wähle einen WebSpace-Anbieter (z.B. aus FAQ:2606) aus, lade die Datei dort hoch und nenne hier dann den Link.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

hier zunächst der Link:
http://www.factor118.de/xls2007/Farbtabelle.zip
Das ganze ist mit Excel2007 erstellt.

Wenn man bei Farbe auf „weitere Farbe“ klickt, kann man eplizit die RGB-Werte eintragen, das funktioniert soweit eigentlich super.
Ich denke, wenn Du das Arbeitsblatt öffnen kannst wird die „Problematik“ schnell klar.

Die HEX-Codes hole ich mir hier:
http://0to255.com/ff6600
und übertrage diese dann eben manuell in die Tabelle. Mit Pick another Color kann man sich die Verläufe für jede HEX-Farbe aufbauen lassen.

Über die Aufteilung der Werte auf drei Spalten hab ich auch schon nachgedacht, aber die formel selbst berechnet ja die Werte und fügt sie zusammen. Da war die Idee, ob nicht ein Makro die Werte ebenfalls erfassen kann und dann als Hintergrundfarbe einbaut…

Selbst wenn ich das jeweils manuell ausführen müsste, wäre es immer noch eine immense Erleichterung, da zu den bestehenden Farben noch die jeweiligen Komplementärfarben aufgebaut werden. Aus diesem gesamten Pool werden dann letztendlich ca. 32 Farben als Grundfarben für die Gestaltung festgelegt, allerdings nicht durch mich, sonst müsste ich mir den Aufwand eigentlich nicht geben :wink:

Grüezi Pixcelwizard

hier zunächst der Link:
http://www.factor118.de/xls2007/Farbtabelle.zip
Das ganze ist mit Excel2007 erstellt.

Ja, da kannst Du dann (fast) beliebig viele Farben darstellen lassen.

Wenn man bei Farbe auf „weitere Farbe“ klickt, kann man
eplizit die RGB-Werte eintragen, das funktioniert soweit
eigentlich super.
Ich denke, wenn Du das Arbeitsblatt öffnen kannst wird die
„Problematik“ schnell klar.

Ja, das ist soweit klar und passt auch - kann es sein, dass Du beim Zusammenstellen der RGB-Werte mit der Formel einen Dreher drin hast, oder das die Werte in der umgekehrten Reihenfolge in den Farb-Dialog geschrieben wurden?
Anders gefragt welche dieser Werte entspricht denn genau dem Rot- Grün- Blau-Anteil der Farbe?

255/102/0

Dies ist nicht bei allen Farb-Übergängen in der Tabelle durchgängig gleich gehandhabt, fürchte ich.

Über die Aufteilung der Werte auf drei Spalten hab ich auch
schon nachgedacht, aber die formel selbst berechnet ja die
Werte und fügt sie zusammen. Da war die Idee, ob nicht ein
Makro die Werte ebenfalls erfassen kann und dann als
Hintergrundfarbe einbaut…

OK, die Daten kann man auch im Makro aufsplitten lassen, das ist kein Problem.

Selbst wenn ich das jeweils manuell ausführen müsste, wäre es
immer noch eine immense Erleichterung, da zu den bestehenden
Farben noch die jeweiligen Komplementärfarben aufgebaut
werden. Aus diesem gesamten Pool werden dann letztendlich ca.
32 Farben als Grundfarben für die Gestaltung festgelegt.

Kopiere die folgenden VBA-Code Zeilen in ein allgemeines Modul im VBA-Editor.

Markiere dann eine Spalte mit den RGB-WErten und lass den Code rennen - die Zellen (und auch gleich die daneben) werden dann mit der entsprechenden Farbe hinterlegt.

Public Sub MakeRGB()
Dim rngzelle As Range
Dim varRGB As Variant
 For Each rngzelle In Selection
 varRGB = Split(rngzelle.Value, "/")
 rngzelle.Resize(1, 2).Interior.Color = RGB(CDbl(varRGB(0)), CDbl(varRGB(1)), CDbl(varRGB(2)))
 Next rngzelle
End Sub

Im Code sind keine ErrorHandler drin, daher muss die Markierung genau passen, wenn Du ihn rennen lässt.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

habe das ganze gerade ausprobiert - funktioniert bestens!
Herzlichen Dank!

Zu Deiner Frage: die RGB-Werte werden genau in der Reihenfolge zusammengestellt R/G/B. Nur war die gesamte Tabelle noch nicht ganz fertig überarbeitet, d. h. nur die ersten acht Tabellen waren auf aktuellem Stand. Aber was mich vorher eine halbe Stunde gekostet hat, geht jetzt in wenigen Sekunden.

Werde mich mal etwas näher mit VB und den Möglichkeiten befassen, aber dafür fehlt mir im Augenblick etwas die Zeit, um es mal vorsichtig zu formulieren.

Mein nächster Schritt ist eher dahingehend, das ich die HEX-Code-Generierung automatisieren möchte, damit ich nicht immer alles manuell übertragen muss und diese Tabellen dann von alleine entstehen.
Die Grundagen dazu hab ich schon gesammelt, der Rest ist dann noch etwas Fleißarbeit.

Wie du sicher bemerkt hast, wird die Ausgangsfarbe soweit möglich in die Mitte der Tabelle gesetzt und dann der Gradient nach oben gegen weiss und unten gegen schwarz berechnet, das ganze über 30-32 Werte.
Es gibt dann im Web auch noch ein paar Tools, die dann noch gleich passende Farben dazu „vorschlagen“ - so was in der Art stelle ich mir als Ziel dann auf Excel-Basis vor.

Also nochmal, viele Dank für die schnelle Hilfe!

Gruß, Alex

Grüezi Ales

habe das ganze gerade ausprobiert - funktioniert bestens!
Herzlichen Dank!

Das freut mich sehr - und Danke vielmals :smile:

Zu Deiner Frage: die RGB-Werte werden genau in der Reihenfolge
zusammengestellt R/G/B. Nur war die gesamte Tabelle noch nicht
ganz fertig überarbeitet, d. h. nur die ersten acht Tabellen
waren auf aktuellem Stand.

Gut, das hatte ich mir schon fast so gedacht.

Aber was mich vorher eine halbe
Stunde gekostet hat, geht jetzt in wenigen Sekunden.

Na das ist ja der Sinn der Sache; hier noch ein weiterer Schritt in diese Richtung. Kopiere folgende Zeilen ins Codemodul des Tabellenblattes auf dem Du die HEX-Werte einträgst (Rechtsklick auf den Reiter und ‚Code anzeigen‘ auswählen):

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim rngZelle As Range
Dim varRGB As Variant

 For Each rngZelle In Target
 With rngZelle
 If Left(.Text, 1) = "#" Then
 .Offset(0, 1).FormulaR1C1 = \_
 "=CONCATENATE(HEXINDEZ(MID(RC[-1],2,2)),""/"",HEXINDEZ(MID(RC[-1],4,2)),""/"",HEXINDEZ(MID(RC[-1],6,2)))"
 varRGB = Split(.Offset(0, 1).Value, "/")
 .Offset(0, 1).Resize(1, 2).Interior.Color = RGB(CDbl(varRGB(0)), CDbl(varRGB(1)), CDbl(varRGB(2)))
 End If
 End With
 Next rngZelle
End Sub

Damit wird dir nun in jeder Zelle in die Du einen Hex-Wert (beginnend mit ‚#‘) einträgst in die Nebenspalte die Formel eingetragen und die beiden Zellen gleich richtig eingefärbt.
Damit entfällt dann auch das Eintragen der Formel und der manuelle Schritt mit dem Markieren und Makro starten.

Werde mich mal etwas näher mit VB und den Möglichkeiten
befassen, aber dafür fehlt mir im Augenblick etwas die Zeit,
um es mal vorsichtig zu formulieren.

Frage hier einfach wieder nach und gib so gute und konkrete Angaben wie bisher, dann klappt das auch in Zukunft :smile:

Mein nächster Schritt ist eher dahingehend, das ich die
HEX-Code-Generierung automatisieren möchte, damit ich nicht
immer alles manuell übertragen muss und diese Tabellen dann
von alleine entstehen.
Die Grundagen dazu hab ich schon gesammelt, der Rest ist dann
noch etwas Fleißarbeit.

Da könnte man vermutlich mit VBA auch noch was ‚türken‘ - sobald der Algorithmus klar ist, lässt sich da einiges berechnen und automatisieren.

Wie du sicher bemerkt hast, wird die Ausgangsfarbe soweit
möglich in die Mitte der Tabelle gesetzt und dann der Gradient
nach oben gegen weiss und unten gegen schwarz berechnet, das
ganze über 30-32 Werte.
Es gibt dann im Web auch noch ein paar Tools, die dann noch
gleich passende Farben dazu „vorschlagen“ - so was in der Art
stelle ich mir als Ziel dann auf Excel-Basis vor.

Das wären dann Schritt 3 und 4 - macht Spass :smile:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -