スプレッドシートのセルの値に応じて色を自動的に塗りつぶす

スプレッドシートのセルの値に応じて色を自動的に塗りつぶす

質問 :スプレッドシートの各セルを、セル値と同じグレースケール値の色で塗りつぶすことは可能ですか?

説明 :

次のようなスプレッドシートがあるとします。

ここに画像の説明を入力してください

すべての値は 0 ~ 255 の範囲にあります (256 グレースケール カラーに相当)。ここで、各セルを、セル内の値と同じ色で塗りつぶします。予想される出力は次のようになります。

ここに画像の説明を入力してください

また、各セルのフォントの色が背景色に応じて黒または白になっていることも確認してください。

Excel でこれを非常に少ない手順で、または一度にすべて実行できる簡単な方法はありますか?

答え1

セルを反復処理し、セル内の値を読み取り、次のように色に割り当てるマクロを作成します。

Range("A1:A6").Interior.Color = RGB(200,160,35)

答え2

TheUser1024 は正しいので、私も投票します。

すぐに使用できるソリューションは次のとおりです。

Public Sub Demo()
  Dim cel As Range
  Dim myRange As Range

  Set myRange = Range("A1:E10")

  For Each cel In myRange
    cel.Interior.Color = RGB(cel.Value, cel.Value, cel.Value)
    If cel.Value > 127 Then
      cel.Font.Color = RGB(0, 0, 0)
    Else
      cel.Font.Color = RGB(255, 255, 255)
    End If
  Next cel
End Sub

編集:

このコードは文字列または負の値の場合でも動作しません...

Public Sub Demo()
  Dim cel As Range
  Dim greytone As Long
  Dim myRange As Range

  Set myRange = Range("A1:E10")

  For Each cel In myRange
    greytone = CLng(Abs(Val(cel.Value)))
    cel.Interior.Color = RGB(greytone, greytone, greytone)
    If greytone > 127 Then
      cel.Font.Color = RGB(0, 0, 0)
    Else
      cel.Font.Color = RGB(255, 255, 255)
    End If
  Next cel
End Sub

関連情報