2016-12-09 15 views
-2

VBAコードの作成にはいくつかの助けが必要でした。 列Aのロケーション番号が一致する場合、条件付き書式をテーブルに適用したいと思います。ここでVBAでの条件付き書式設定

は、私のテーブルのサンプルです:私がやりたいのは何

+-----------------+------+-------+ 
| Location Number | Year | Value | 
+-----------------+------+-------+ 
|    1 | 2015 | 1.1 | 
|    1 | 2016 | 2.3 | 
|    2 | 2015 | 2.8 | 
|    2 | 2016 | 3.2 | 
|    3 | 2015 | 7.8 | 
|    3 | 2016 | 3.7 | 
+-----------------+------+-------+ 

は、位置番号が一致した場合、2015年と2016年からの値を比較するように、このテーブルに条件付き書式を適用しています。

条件付き書式設定は非常に簡単です:

2016が2015よりも大きい場合は、値の赤を回します。

2016が2015未満の場合は、セルを緑色にします。

+0

bは年ですか? –

+0

正解、年は列Bにあります – Darren

+0

質問を更新し、条件の説明を改善する必要があります。 (「2016が2015未満の場合は、セルを緑色にします。」)。また、コードしようとしたVBAを投稿してください。 –

答えて

1

どのように次のマクロについて:

Sub ColorYear() 

Dim long1 As Long 
Dim rng As Range 

Set rng = ActiveSheet.Range("A:A") 
long1 = Application.WorksheetFunction.CountA(rng) 

For t = 2 To long1 
If ActiveSheet.Range("A" & t).Value = ActiveSheet.Range("A" & t - 1).Value Then 
    If ActiveSheet.Range("C" & t).Value < ActiveSheet.Range("C" & t - 1).Value Then 
    ActiveSheet.Range("C" & t).Interior.Color = RGB(0, 255, 0) 
    ElseIf ActiveSheet.Range("C" & t).Value > ActiveSheet.Range("C" & t - 1).Value Then 
    ActiveSheet.Range("C" & t).Interior.Color = RGB(255, 0, 0) 
    End If 

    If ActiveSheet.Range("D" & t).Value < ActiveSheet.Range("D" & t - 1).Value Then 
    ActiveSheet.Range("D" & t).Interior.Color = RGB(0, 255, 0) 
    ElseIf ActiveSheet.Range("D" & t).Value > ActiveSheet.Range("D" & t - 1).Value Then 
    ActiveSheet.Range("D" & t).Interior.Color = RGB(255, 0, 0) 
    End If 
End If 

Next t 

End Sub 

結果:

Sub Arrow() 

Dim long1 As Long 
Dim rng As Range 

Set rng = ActiveSheet.Range("A:A") 
long1 = Application.WorksheetFunction.CountA(rng) 

For t = 2 To long1 
If ActiveSheet.Range("A" & t).Value = ActiveSheet.Range("A" & t - 1).Value Then 

If ActiveSheet.Range("C" & t).Value < ActiveSheet.Range("C" & t - 1).Value Then 
ActiveSheet.Range("D" & t).Value = ChrW(9660) 
ActiveSheet.Range("D" & t).Font.Color = RGB(42, 154, 68) 
ElseIf ActiveSheet.Range("C" & t).Value > ActiveSheet.Range("C" & t - 1).Value Then 
ActiveSheet.Range("D" & t).Value = ChrW(9650) 
ActiveSheet.Range("D" & t).Font.Color = RGB(229, 35, 35) 
End If 

End If 

Next t 

End Sub 

してください:あなたは、矢印を使用したい場合は

enter image description here

は、次のコードを使用することができますこのコードは列Dの値を上書きするので、何もしないことを確認してください列Dに任意の値を格納します。

+0

動作するようです!次の質問には、実際には複数の「値」列があります。これらは列C、D、E、およびFにあります。これらの各列を実行するには、このコードをどのように変更できますか?だから列Cで実行するのではなく、列C、D、EおよびFで実行されますか? – Darren

+1

ifセクションをコピーして(End IFにIF)貼り付ける必要がありますが、ループ内でCの名前をDに変更するなど –

+0

ありがとう、Pete!赤/緑のセルを着色するのではなく、好奇心の外に、上下の矢印アイコンを実装する方法はありますか?私は標準的な条件付き書式設定の方法でこれをやってみましたが、アイコンが相対参照に適用できないというエラーを受けました... – Darren