質問 :スプレッドシートの各セルを、セル値と同じグレースケール値の色で塗りつぶすことは可能ですか?
説明 :
次のようなスプレッドシートがあるとします。
すべての値は 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