2016-12-21 13 views
2

私はいくつかのデータ列を比較するいくつかのVBAコードを適用しようとしています。条件付きでVBAを使用してピボットテーブルをフォーマットする

参照画像(この条件付き書式を介して正しい)以下:この場合 enter image description here

、列Cの値は、列Bと比較されて、FのD、GにE、IへH.高いスコアは悪いので、条件付き書式設定はすべての2016列にあります。値が2015より大きい場合は、赤の下向きの矢印が、反対の場合は緑の矢印が表示されます。

Sub ColorYear() 
    Dim long1 As Long 
    Dim t As Long 
    Dim c As Long 
    Application.ScreenUpdating = False 
    ' Last used row 
    long1 = Cells(Rows.Count, 1).End(xlUp).Row 
    ' Delete existing rules 
    Range("A7:U" & long1).FormatConditions.Delete 
    ' Loop through the rows 
    For t = 3 To long1 
     For c = 5 To 21 Step 2 ' columns C,E,G,I 
      With Cells(t, c).FormatConditions.AddIconSetCondition 
       .IconSet = ActiveWorkbook.IconSets(xl3Triangles) 
       .ReverseOrder = True 
       With .IconCriteria(2) 
        .Type = xlConditionValueFormula 
        .Value = "=" & Cells(t, c - 1).Address 
        .Operator = 7 
       End With 
       With .IconCriteria(3) 
        .Type = xlConditionValueFormula 
        .Value = "=" & Cells(t, c - 1).Address 
        .Operator = 5 
       End With 
      End With 
     Next c 
    Next t 
    Application.ScreenUpdating = True 
End Sub 

これは長い間何のフィルタリング適用がないように動作します。ここでは

は、私が使用してきたコードです。たとえば、フィルタが適用されていない場合、セルC3はB3と比較されます。しかし、いくつかのフィルタを適用すると、C2はB3(元のセル)と比較されるため、比較が正しくなくなり、誤った条件付き書式が返されます。

参照イメージ(これが適用されるフィルタと、誤ったフォーマットである)以下:

enter image description here

誰でも助けることはできますか?

+0

FWIW [ux.se]の観点からは、*高い*の数字が*下向きの*赤の矢印を、*低い*の数字が*上向きの*緑の矢印を持つべき理由はすぐには分かりません。 –

答えて

0

セルアドレスの代わりに定数式を使用するように条件付きロジックを変更します。

はTYとLYの差分を算出する列を追加し、そして<0>0、又は=0あるにアイコン条件作ります。

また、私はコメントで述べたように:

FWIWユーザーエクスペリエンスの観点から、より多くの数は、下向きの赤い矢印を持っていなければならない理由、それはすぐに明らかではない、と低い数字が上向きの緑の矢印を持っている必要があります。

矢印の代わりに色付きの円アイコンを使用することを検討してください。

colored circles

それでも表されるデータを矛盾だ上/下方向を暗示することなく、「良い」、「ニュートラル」と「悪い」を伝えるその方法。

+0

コメントありがとうございました。色のついた円は良い考えです。 TYとLYはどういう意味ですか?また、追加の列を追加する代わりに、このロジックをVBAコード自体に実装する方法はありますか?なぜなら、比較する必要がある16個の列があるから、これは追加の列がたくさんあるからです。さらに、これはピボットテーブルなので、多くの追加ステップを導入する計算フィールドを使用する必要があります。 – Darren

+0

"今年"と "前年"です;-)ピボットソースデータに計算を追加できる場合は、ピボットフィールドを計算する必要はありません。問題は、私の経験では、一旦フォーマットされたピボットテーブルはそのままPDFでなければならないということです。そうでなければフォーマットを破棄します。 formsts内のセル参照を避けることは、私がそれを避けるために見つけた唯一の方法です。たぶん、他の誰かが良いアイデアを持っているでしょう。 –

+0

ああ、持っています。うーん、私が考えているように、データソースに追加の列を追加するのは、完了したと言われるよりも簡単かもしれません。これらの値は最初に計算されるフィールドなので、データソースに追加の列を追加すると、 – Darren

関連する問題