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

RGB to ColorIndex

RGB to ColorIndex
04.05.2023 16:45:42
Frank

Hallo zusammen,

ich habe diesen Code, um aus einem Colorinidex die RGB-Werte zu berechnen. Kann mir jemand sagen wie man quasi die Umkehrfunktion bildet, so dass ich aus drei gegebenen RGB Werten den Colorindex berechne?

Wert = ActiveCell.Interior.Color
Rot = Wert Mod 256
Wert = (Wert - Rot) / 256
Gruen = Wert Mod 256
Wert = (Wert - Gruen) / 256
Blau = Wert Mod 256


Vielen Dank und viele Grüße
Frank

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: RGB to ColorIndex
04.05.2023 16:56:23
RPP63
Moin!
Wo bitte siehst Du in "Deinem" Code irgendwo ColorIndex?
Der ColorIndex hat mit Color oder rgb() rein gar nichts zu tun!
Ganz im Gegenteil:
Er lässt sich jederzeit auf eine x-beliebige Farbe ändern.

Gruß Ralf


Ohne Index
04.05.2023 16:59:22
RPP63
Wenn Du hingegen "nur" den Color-Wert aus den 3 Grundfarben errechnen willst:
rgb(15, 15, 15) ergibt 986895


AW: RGB to ColorIndex
04.05.2023 17:04:05
Frank
Ich sehe in meinem Code kein ColoxIndex. Das war meine Beschreibung für meine Frage. Ich suche die Umkehrfunktion den Umkehrcode.
Wenn ich bspw. für Wert auslese: 5296274
ergibt das für
R = 146
G = 208
B = 80


Anzeige
AW: RGB to ColorIndex
04.05.2023 17:02:24
Yal
Hallo Frank,

gerade eben eine ähnliche Frage behandelt: https://www.herber.de/forum/archiv/1928to1932/1929779_VBA_Definition_einer_FarbVarbiable_in_h.html#1929883

Die Function die Du suchst heisst RGB( R-Value, G-Value, B-Value)
R-, G-, B-Value zwischen 0 und 255.

ColorIndex ist der Nummer der Farbe in der Palette. Diese Palette ist aber Einstelung-abhängig, spricht ColorINdex=3 ist nicht immer Rot.
Hier geht es um Farbwerte. Diese sind allgemein gültig.

VG
Yal


Anzeige
AW: RGB to ColorIndex
04.05.2023 17:07:37
Frank
Hallo Yal,

vielen Dank für deine ausführliche Antwort. Diese Funktion steht aber nicht in Excel zur Verfügung oder?

Vielen Dank und viele Grüße
Frank


AW: RGB to ColorIndex
04.05.2023 17:13:15
Frank
Hallo Yal,

ich habe mir eben deinen Beitrag angesehen. Das ist sozusagen auch die Handberechnung wie man die R G B Werte berechnet. Ich suche die Umkehrfunktion, weil ich wissen möchte wie diese lange Zahl berechnet wird. Eigentlich kann das nicht so schwer sein. Man benötigt die Umkehrfunktion von mod bzw. Rest.

Schöne Grüße
Frank


AW: RGB to ColorIndex
04.05.2023 17:18:59
Yal
Hallo Frank,

in dem Beitrag ging es um ein "sehr ähnliche" Frage aber eben nicht genau die Frage.
Jedoch ist die Erklärung von vorhin auch drin implementiert (es in 10 zeilen Code zu entdecken, sollte zumutbar sein).

Lies den Beitrag nach dem Link nochmal, gehe auf dem Link, lies den Code Ziele für Zeile, kopiere den Code in Excel und lasse es laufen.
Idealerweise im Schritt-Modus, sodass der Verstand mithalten kann.

Nicht zur Strafe sondern zur Übung ;-)

VG
Yal


Anzeige
AW: RGB to ColorIndex
04.05.2023 19:18:55
Frank
Guten Abend Yal,

vielen lieben Dank. Ich werde mir deinen Code noch einmal ansehen, ich möchte ja etwas lernen.

Viele Grüße
Frank


AW: RGB to ColorIndex
04.05.2023 17:13:35
Yal
Hallo Frank,

VBA steht für Visual Basic for Application und nicht für Visual Baisc for Excel. Es funktioniert daher in alle Microsoft-Produkte, die VBA verwenden.
In anderen Prog-Sprachen sollte es ca. derselbe Begriff sein. Also für viele nicht Microsoft-Produkte sollte es funktionieren.

VG
Yal


Anzeige
AW: RGB to ColorIndex
04.05.2023 17:24:04
snb
Sub M_snb()
   For j = 1 To 56
      Cells(j, 1).Interior.ColorIndex = j
      Cells(j, 2) = Cells(j, 1).Interior.Color
      Cells(j, 3) = Cells(j, 2) \ 256 ^ 2
      Cells(j, 4) = Cells(j, 2) Mod 256 ^ 2 \ 256
      Cells(j, 5) = Cells(1, 2) Mod 256
   Next
End Sub


AW: RGB to ColorIndex
04.05.2023 17:25:39
snb
Hatte noch ein Typfehler.

Sub M_snb()
   For j = 1 To 56
      Cells(j, 1).Interior.ColorIndex = j
      Cells(j, 2) = Cells(j, 1).Interior.Color
      Cells(j, 3) = Cells(j, 2) \ 256 ^ 2
      Cells(j, 4) = Cells(j, 2) Mod 256 ^ 2 \ 256
      Cells(j, 5) = Cells(j, 2) Mod 256
   Next
End Sub


Anzeige
AW: RGB to ColorIndex
04.05.2023 17:29:34
Daniel
Hi
Colorindex ist eine Tabelle mit 56 hinterlegten Farben und der Colorindex ist dann praktisch die Indexnummer von 1-56 entsprechen der Farbtabelle.
Früher konnte Excel nur 56 verschiedene Farben auf einem Tabellenblatt darstellen, daher der Weg über den Colorindex, mit dem man aus den 56 vorgewählten Farben eine auswählen konnte.
Heute kann Excel beliebig viele Farben darstellen, der Colorindex ist nur noch drin, damit alte Makros noch funktionieren.
wenn du heute den Colorindex einer Zelle abfragst, der nicht einer dieser 56 vorgegeben entspricht, wird VBA dir den Index der ähnlichsten Farbe ausgeben (wie immer das definiert ist).
Du musst also eine Zelle einfärben und dann den Colorindex dieser Zelle abfragen.
Range("A1").Interior.Color = RGB(r, g, b)
Msgbox Range("A1").Interior.Colorindex
Um dann zu testen, ob es die gleiche oder eine ähnliche Farbe ist, musst du dann eine weitere Zelle über den Colorindex einfärben und dann die Farbwerte vergleichen.

Gruß Daniel


Anzeige
AW: RGB to ColorIndex
04.05.2023 18:09:45
Nepumuk
Hallo Frank,

meinst du das?

Public Sub Test()

    Dim lngRed As Long, lngGreen As Long, lngBlue As Long, lngColor As Long

    lngRed = 255
    lngGreen = 255
    lngBlue = 255

    lngColor = lngRed And vbRed
    lngColor = lngColor + (lngGreen * &H100 And vbGreen)
    lngColor = lngColor + (lngBlue * &H10000 And vbBlue)

    Debug.Print lngColor

End Sub
Gruß
Nepumuk


AW: RGB to ColorIndex
04.05.2023 19:16:56
Frank
Guten Abend Nepumuk,

vielen lieben Dank - ja genau das meinte ich :o).

Ich wünsche dir einen schönen Abend.
Viele Grüße
Frank


Anzeige
AW: RGB to ColorIndex
04.05.2023 19:51:01
onur
Und warum ignorierst du MEINE Antwort ????


AW: RGB to ColorIndex
04.05.2023 18:14:46
Daniel
Hi
wenn du nicht den INDEX meinst sondern den normalen Farbwert, dann ist das eigentlich ganz einfach (R, G und B sind die einzelnen Farbwerte)
Farbwert = R* + G*256 + B*256*256 
oder etwas systematischer:
Farbwert = R*256^0 + G*256^1 + B*256^2 
oder als Formel in Excel über Hexzahlen, weil man die einfach verketten kann:
=HexinDez(DezinHex(B, 2)&DezinHex(G, 2)&DezinHex(R, 2))*1
Gruß Daniel


Anzeige
AW: RGB to ColorIndex
04.05.2023 19:17:40
Frank
Guten Abend Daniel,

auch das ist eine sehr gute Lösung - vielen lieben Dank und auch Dir einen schönen Abend.

Viele Grüße
Frank


AW: RGB to ColorIndex
04.05.2023 19:21:17
Frank
Dafür seid ihr eben die Profis...
Auf so eine Formel wäre ich nicht gekommen :o(
=HexinDez(DezinHex(B, 2)&DezinHex(G, 2)&DezinHex(R, 2))*1
Nochmals vielen lieben Dank. So komme ich jetzt weiter.
Viele Grüße
Frank


AW: RGB to ColorIndex
04.05.2023 22:31:06
Yal
Hallo Frank,

diese Formel, so verstehe ich Daniel, sollte keine Lösung sondern eine Erklärung sein.

Wie mehrfach von mehreren erklärt, ist die Lösung die function RGB():
RGB (255, 0, 0) = hFF = h0000FF = 256^1 - 1 = 255
RGB(0, 255, 0) = hFF00 = h00FF00 = 256^2 - 1 = 65.535
RGB(0, 0, 255) = hFF0000 = 256^3 - 1 = 16.777.215

Have a try.

VG
Yal


Anzeige
Falsche Berechnung (weil per Hand)
04.05.2023 22:33:30
Yal
Meine Rechnungsbeispiel ist falsch. Onur hat richtig berechnet.
Egal. RGB() funktioniert.

VG
Yal


AW: RGB to ColorIndex
04.05.2023 19:19:42
onur
RGB IST die doch Funktion, die du suchst !
RGB(255,0,0)= 255
RGB(255,255,0)= 65535
RGB(255,255,255)= 16777215

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige