一意の値を持つ書式設定されたセルの「キー」を作成し、キーの書式設定を使用して別のシート形式のセルに作成できるExcelスプレッドシートがあります。
たとえば、私のキーは次のとおりです。セルごとに1つの値があり、括弧内に視覚的な書式が示されています。
A (red background)
B (green background)
C (blue background)
つまり、これは1つのシート(または現在のシートのリモートコーナーのどちらか良い方)にあります。次に、条件付き書式用にマークした領域で、これら3文字のいずれかを入力し、入力したセルをキーに従って視覚的に書式設定することができます。したがって、条件付きでフォーマットされたセルの1つに「B」を入力すると、背景が緑色になります。
(ここでは説明を簡単にするためだけに背景を使用していることに注意してください。理想的には、前景色、背景色、フォントの太さ、境界線など、すべての視覚的な書式をコピーしたいのですが、できることはすべて取り上げます。明らかに取得します。)
そして、さらにトリッキーにするために、キーのフォーマットを変更した場合、その変更はキーを参照するセルに反映されるはずです。したがって、キーの「B」の書式を緑色の背景から紫色の背景に変更すると、メインシートの「B」が新しい色に切り替わるはずです。同様に、キーに値を追加または削除して、それらの変更をメインデータセットに適用できるようにする必要があります。
ボタンなどをクリックすると、formatting-update-on-key-changeがトリガーされても問題ありません。これが可能であればVBAが必要になると思いますが、使用したことがないので、どこから始めればよいのかわかりません。 VBAなしで可能になることを願っています。
複数の条件付きフォーマットを使用することも可能ですが、ここでの私の使用例は、条件付きフォーマットに精通していない人のために上記の機能を作成しようとしていることです。キーを定義し、必要に応じて更新し、スプレッドシートのフォーマットルールを書き直さなくてもトラックインを続けられるようにしたいと思います。
---更新---
ですから、最初のリクエストについては少し不明確だったと思います。画像でもう一度試してみましょう。
画像は左側に「キー」を示しており、値とスタイルはキーボードとマウスの入力を使用して定義されています。右側に、キーと一致するようにフォーマットする必要のあるデータが表示されます。
したがって、データ領域のセルに「C」を入力すると、ブルーバックになります。さらに、キーの「C」のフォーマットを紫色の背景に変更すると、all「C」セルが青色から紫色に切り替わるはずです。 。さらに気が狂うように、キーにさらに追加すると(たとえば、背景が黄色の「D」)、「D」セルはすべて一致するようにスタイル設定されます。キーエントリを削除すると、データ領域で一致する値がデフォルトのスタイルに戻るはずです。
そう。それはもっと明確ですか?全体的または部分的に可能ですか?これに条件付き書式を使用する必要はありません。実際、この時点では、おそらくそうすべきではないと思います。しかし、私はどんなアプローチにもオープンです!
これは、A1のセルを使用して、D1:D9のセルの条件を設定します-ニーズに合わせて範囲を変更します。
_Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" and Sh.Name="Sheet1" Then
Sheets(1).Range("D1:D9").FormatConditions(1).Font.Color = Target.Font.Color
Sheets(1).Range("D1:D9").FormatConditions(1).Interior.Color = Target.Interior.Color
End If
End Sub
_
色を変更した後、セルを編集してEnterキーを押すと、セルをchangeする必要があります(変更イベントがトリガーされます)
フォーマット条件は、ルールが適用される順序で並べられています。適用できる変更は他にもたくさんあります。コードに別の.FormatConditions(1).Whatever = Target.Whatever
を追加するだけです。
このコードは条件を設定せず、そこにある条件を変更するだけです。条件は、画面に表示されるルール順に番号が付けられます
条件付き書式を使用せず、セルに色を付けるだけの場合は、次のように各セルをループできます。
_Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Or Sh.Name <> "Sheet1" Then Exit Sub
' exit if not in key range (formatting key is A:A on sheet1
If VarType(Target) > vbArray Then Exit Sub
' if multiple cells are changed at once, then exit, as i'm not going to fight with multi cell change
Dim TargetRange As Range
Dim lCell As Object
Set TargetRange = Sh.Range("D1:D9")
' changing cells in this area
For Each lCell In TargetRange.Cells
If lCell.Value = Target.Value Then
' only change cells that match the edited cell
lCell.Font.Color = Target.Font.Color
lCell.Interior.Color = Target.Interior.Color
' copy whatever you feel needs to be copied
End If
Next
End Sub
_
これはショーンがしたことの拡張です(サブの内部を示しているだけです):
If Intersect(Target, Range("A:G")) Is Nothing Or Sh.Name <> "Sheet3" Then Exit Sub
' exit if not in key range (formatting key is A:A on sheet1
If VarType(Target) > vbArray Then Exit Sub
' if multiple cells are changed at once, then exit, as i'm not going to fight with multi cell change
Dim KeyRange As Range
Dim TargetRange As Range
Dim lCell As Object
Dim kCell As Object
Set KeyRange = Sh.Range("A1:A10")
' formatting key is here
Set TargetRange = Sh.Range("D1:F9")
' changing cells in this area
For Each kCell In KeyRange.Cells
If kCell.Value <> "" Then
For Each lCell In TargetRange.Cells
If lCell.Value = kCell.Value Then
' only change cells that match the edited cell
lCell.Font.Color = kCell.Font.Color
lCell.Interior.Color = kCell.Interior.Color
' copy whatever you feel needs to be copied
End If
Next
End If
Next