Frage

Ich habe eine Spalte mit RGB-Werten, zB

127,187,199
67,22,94

In Excel gibt es eine Möglichkeit, diese kann die Hintergrundfarbe der Zelle setzen?

War es hilfreich?

Lösung

Sie können VBA verwenden - so etwas wie

Range("A1:A6").Interior.Color = RGB(127,187,199)

übergeben Sie einfach in der Zelle Wert.

Andere Tipps

Zur Einstellung der Eigenschaft Color allein eine genaue Übereinstimmung garantieren. Excel 2003 kann nur 56 Farben auf einmal verarbeiten. Die gute Nachricht ist, dass Sie alle RGB-Wert überhaupt zu diesen 56 Slots zuweisen (die ColorIndexs genannt werden). Wenn Sie eine Zelle der Farbe mit der Farbe Eigenschaft bewirkt, dass dieser Excel des nächsten „Colorindex“ verwenden. Beispiel: wird eine Zelle zu RGB 10,20,50 (oder 3.281.930) Einstellung tatsächlich dazu führen, um es zu Farbindex 56 eingestellt werden, die 51,51,51 (oder 3.355.443).

Wenn Sie sicher sein möchten, dass Sie eine genaue Übereinstimmung erhalten, müssen Sie eine Colorindex auf den RGB-Wert ändern, die Sie wollen, und dann die Color Cell ändern Wert gesagt. Allerdings sollte man sich bewusst sein, dass durch den Wert eines Farbindex ändern Sie die Farbe ändern alle Zellen bereits die Farbe innerhalb der Arbeitsmappe verwenden. Um ein Beispiel zu geben, ist Red Color 3. So jede Zelle, die Sie Red gemacht Sie tatsächlich Color 3. Und wenn Sie neu definieren Color 3 sagen, lila, dann wird Ihr Handy in der Tat lila gemacht werden, sondern auch alle anderen roten Blutkörperchen in der Arbeitsmappe wird auch auf lila geändert werden.

Es gibt verschiedene Strategien, um damit umzugehen. Eine Möglichkeit ist, einen Index noch nicht in Gebrauch zu wählen, oder nur eine, die Sie denken, wird wahrscheinlich nicht verwendet werden. Eine weitere Möglichkeit ist es, den RGB-Wert die ändern nächsten Colorindex , damit Ihre Änderung subtil sein. Der Code, den ich unten geschrieben habe nimmt diesen Ansatz. Unter Ausnutzung der Erkenntnis, daß der nächste Colorindex zugeordnet ist, weist es den RGB-Wert direkt auf die Zelle (wodurch die nächste Farbe ergibt), und weist dann den RGB-Wert zu diesem Index.

Sub Example()
    Dim lngColor As Long
    lngColor = RGB(10, 20, 50)
    With Range("A1").Interior
        .Color = lngColor
        ActiveWorkbook.Colors(.ColorIndex) = lngColor
    End With
End Sub

Die Zellen können nicht aus einer VBA-Funktion als Arbeitsblatt Formel geändert werden. Außer über diese Problemumgehung ...

Setzen Sie diese Funktion in ein neues Modul:

Function SetRGB(x As Range, R As Byte, G As Byte, B As Byte)
  On Error Resume Next
  x.Interior.Color = RGB(R, G, B)
  x.Font.Color = IIf(0.299 * R + 0.587 * G + 0.114 * B < 128, vbWhite, vbBlack)
End Function

Dann diese Formel in Ihrem Blatt verwendet, zum Beispiel in Zelle D2:

=HYPERLINK(SetRGB(D2;A2;B2;C2);"HOVER!")

Wenn Sie die Maus über die Zelle (versuchen Sie es!) Schweben, die Hintergrundfarbe Updates für die RGB von Zellen aufgenommen A2 C2. Die Schriftfarbe ist ein kontrastier weiß oder schwarz.

Um jede Zelle auf seinem aktuellen ganzzahligen Wert Farbe basiert, soll folgende funktionieren, wenn Sie eine aktuelle Version von Excel haben. (Ältere Versionen behandeln nicht rgb als auch)

Sub Colourise()
'
' Colourise Macro
'
' Colours all selected cells, based on their current integer rgb value
' For e.g. (it's a bit backward from what you might expect)
' 255 = #ff0000 = red
' 256*255 = #00ff00 = green
' 256*256*255 #0000ff = blue
' 255 + 256*256*255 #ff00ff = magenta
' and so on...
'
' Keyboard Shortcut: Ctrl+Shift+C (or whatever you want to set it to)
'
  For Each cell In Selection
    If WorksheetFunction.IsNumber(cell) Then
      cell.Interior.Color = cell.Value
    End If
  Next cell
End Sub

Wenn statt einer Nummer Sie eine Zeichenfolge, dann können Sie den String in drei Zahlen geteilt und kombinieren sie rgb () verwenden.

Unter AddColor ()     Für jede Zelle in Auswahl         R = Rund (cell.Value)         G = Round (cell.Offset (0, 1) .Wert)         B = Round (cell.Offset (0, 2) .Wert)         Zellen (cell.Row, 1) .Resize (1, 4) .Interior.Color = RGB (R, G, B)     nächste Zelle End Sub

Unter der Annahme, dass es 3 Spalten R, G und B (in dieser Reihenfolge). Wählen ersten Spalte dh R. drücken Alt + F11 und führen Sie den obigen Code. Wir haben die erste Spalte (mit R oder Rot-Werte) wählen und den Code jedes Mal laufen wir die Werte ändern, um die Änderungen widerzuspiegeln.

Ich hoffe, das einfache Code hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top