2017-10-27 9 views
1

私はポケモンの種類のExcelシートで作業しています。Excel - 条件付きフォーマットの左右のグラデーションは独立していますか?

シートの一部で、ポケモンの種類を選ぶことができます。セルB3C3を使用すると、データの検証によって型のドロップダウンリストから型を選択できます。下記参照。 (正常に動作)以下の式を有する単一のセルにこの種を組み合わせシートの他の部分がある

enter image description here

= IF(OR(C3=B3,C3="(none)"),B3,B3&"/"&C3) 

この場合には、式は、上記返しますGrass/Poison

これはすべてうまくできていますが、このセルを2色のグラデーションで条件付きでフォーマットしてデュアルタイピングを反映させたいと考えています。

問題は、私は、各勾配色ため条件付き書式設定規則を持っている方法を把握できないことです。

つまり、これらの2つの条件付き書式設定ルール(下記参照)がある場合、どちらか一方が適用されますが、両方は適用されません。

enter image description here

この問題に対する明白な解決策は、この特定の組み合わせを処理するための単一条件付き書式のルールを持っているだろう。 (下記参照)下記に完全には示されていませんが、このルールの条件付き書式は=AND(B3="Grass",C3="Poison")です。

enter image description here

このソリューションは、作業を行います。しかし、18種類があることを考慮すると、このセルのために18^2 = 324個の別々の条件付き書式設定ルールを作成する必要があります(可能なすべての型の組み合わせを処理するため)。Excelでは、それがあったとしても、統合するのは面倒です。

セルに2つの勾配ルールを1つのセルに適用する方法がある場合、ルールの数は18 * 2 = 36(左勾配では18、右勾配では18)になります。それは管理可能です。

条件付き書式設定ルールを使用する方法を知っている人は、セルの半分だけにグラデーションカラーを適用します(セルの残りの半分をグラデーション付きの別の条件付き書式設定ルールで変更できるようにします)。これは可能ですか?

+0

2つのドロップダウン内のすべてのアイテムは同じですか? –

+0

はい、私の投稿の最初の画像に示されているようにタイプ2に "(none)"という余分なオプションがありますが、この質問に答えるのはなぜ重要なのでしょうか? – ImaginaryHuman072889

+0

これはVBAがなければ不可能です。 If(B2 = "Grass"; "some color")など、書式自体の規則を作成することはできません。このため、18 * 18の可能性があるため、この多くの条件付きルールが必要になります。あなたはVBAを使用することができれば、これはおそらくかなり簡単です。私はもっ​​と簡単な解決策を提案し、あなたの結果に2つのセルを使用し、それらの2つのセルを1つに見せる規則的な条件付き書式を適用します。 –

答えて

1

VBAを使用して条件付き書式を追加するとどうなりますか?私は、条件付き書式設定のルールを最大限聞いたり経験したりしていませんが、私は専門家ではないと主張しています。

以下のコードは、各タイプをループし、指定された色とタイプの指定に基づいて、グラデーションの条件付き書式設定ルールを追加します。私はそれをスポットテストし、それは私のために働いた。

Sub CondForm() 

Dim colors() As Long 
ReDim colors(1 To 18) 
    colors(1) = RGB(255, 0, 0) 
    colors(2) = RGB(255, 255, 0) 
    '...Add other types here 
    colors(18) = RGB(0, 0, 255) 

Dim Types() As String 
ReDim Types(1 To 18) 
    Types(1) = "Fire" 
    Types(2) = "Thunder" 
    '...Add other types here 
    Types(18) = "Water" 

Dim Rng As Range 
Set Rng = Selection 

'Remove any previous formatting 
Rng.FormatConditions.Delete 

For i = 1 To 18 
    'Add a rule for the type individually 
    With Rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, _ 
     Formula1:="=" & Chr(34) & Types(i) & Chr(34)) 
     .Interior.Pattern = xlPatternLinearGradient 
     .Interior.Gradient.Degree = 0 
     .Interior.Gradient.ColorStops.Clear 
     .Interior.Gradient.ColorStops.Add(0).Color = colors(i) 
     .Interior.Gradient.ColorStops.Add(1).Color = RGB(255, 255, 255) 
    End With 
    For j = 1 To 18 
     'Add a rule for each combined type 
     With Rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, _ 
      Formula1:="=" & Chr(34) & Types(i) & "/" & Types(j) & Chr(34)) 
      .Interior.Pattern = xlPatternLinearGradient 
      .Interior.Gradient.Degree = 0 
      .Interior.Gradient.ColorStops.Clear 
      .Interior.Gradient.ColorStops.Add(0).Color = colors(i) 
      .Interior.Gradient.ColorStops.Add(1).Color = colors(j) 
     End With 
    Next j 
Next i 


End Sub 

これがうまくいくかどうか教えてください。私はその結果について知りたいです。

+0

ありがとう、私はVBAに精通していません、私はここであなたの答えを与えるでしょう。 – ImaginaryHuman072889

+0

お楽しみください。コードを実装するためのガイダンスが必要な場合はお知らせください。補足として、私はさらにいくつかのテストを行い、1つのセルに対して4,100のユニークな条件付き書式設定ルールを作成することができました。私は高くなるように努力しましたが、結果が信頼できなくなった... Excelの最大値に達するずっと前から、あなたは実用的な最大値に達しています。 –

関連する問題