20

シンボルと一致する 16 進数の色のスプレッドシートがあります。セル自体 (またはその隣のセル) をセル内の 16 進数の色で塗りつぶしたいと考えています。「条件付き書式」について少し読んだことがありますが、それがその方法だと思います。

希望する結果を得るにはどうすればよいですか?

4

6 に答える 6

69

すべての色の条件付き書式では実現できません。

仮定: 行 1 にデータ ラベルが含まれている、データ セットにギャップがない、16 進数の色はフォントではなく塗りつぶし用である、16 進数の色の値 (式ではなく数値) を列 C:E (R、G、B) に解析したこれを頻繁に行う必要がない場合は、ColourCells マクロが適している可能性があります。

Sub ColourCells()
Dim HowMany As Integer
On Error Resume Next
Application.DisplayAlerts = False
HowMany = Application.InputBox _
(Prompt:="Enter last row number.", Title:="To apply to how many rows?", Type:=1)
On Error GoTo 0
Application.DisplayAlerts = True
If HowMany = 0 Then
Exit Sub
Else
   Dim i As Integer
   For i = 2 To HowMany
      Cells(i, 3).Interior.Color = RGB(Cells(i, 3), Cells(i, 4), Cells(i, 5))
   Next i
End If
End Sub

プロンプトが表示されたら、n に必要な値を入力します。

サンプル出力と数式など:

SO11466034

Excel の RGB() 関数は実際に BGR 値を作成します (理由を知っている人は誰もいないと思いますが、理由を言っているとは思いません)。そのため、Excel はニブルを逆の順序で表示します。コード Columns3,4,5 は論理的でしたが、奇妙に見えるかもしれないと思った画像の従来の RGB ではなく BGR でした。画像の F の場合、C3 値 ( 「RGB」3 の左側の列) は、RIGHT() を Hex カラーに適用することで得られます

于 2012-07-13T07:31:55.367 に答える
8

はるかに簡単です:

ActiveCell.Interior.Color = WorksheetFunction.Hex2Dec(Mid$(ActiveCell.Text, 2))

Mid は先頭の "#" を取り除き、Hex2Dec は 16 進数を VBA が使用できる 10 進数値に変換します。

処理する範囲を選択して、これを実行します。

Sub ColorCellsByHexInCells()
  Dim rSelection As Range, rCell As Range

  If TypeName(Selection) = "Range" Then
  Set rSelection = Selection
    For Each rCell In rSelection
      rCell.Interior.Color = WorksheetFunction.Hex2Dec(Mid$(rCell.Text, 2))
    Next
  End If
End Sub
于 2015-07-07T13:47:19.847 に答える