①右の列にある数字が、左の列にある場合は青色。
②右の列にある数字が、左の列にない場合は赤色。
というマクロを作りたいのですが、コードを教えて下さい。お願い致します。
あと、例は数字にしたのですが、文字に対応できるもだと助かります。
マクロとは、Excel VBAのことという前提で回答します。
ifステートメントとColorIndexプロパティを使って実現できます。具体的な方法については下記を参照下さい。
わざわざVBAを使わなくても、条件付き書式を使えばできそうです。
以下の例は、左の列がA1~A9まで数字が入力されていると仮定します。
(1) 右の列の最初のセル(例えばC1)にカーソルを移動して、メニューバーから「書式」→「条件付き書式」を選択
(2) 条件(1)に以下を設定
「数式が」
「=ISERROR(VLOOKUP(C1,A1:A9,1,FALSE))」
さらに、[書式]をクリックして、パターンから赤い色を選択し[OK]
(A列からVLOOKUP関数を使って探して、データが存在しなければISERROR関数がTRUEを返す)
(3) [追加]ボタンをクリックして条件を追加
(4) 条件(2)に以下を設定
「数式が」
「=NOT(ISERROR(VLOOKUP(C1,A1:A9,1,FALSE)))」
さらに、[書式]をクリックして、パターンから青い色を選択し[OK]
(A列からVLOOKUP関数を使って探して、データが存在すればISERROR関数がFALSEを返すので、NOT関数で逆のTRUEを返すようにした)
(5)C1が選択されている状態から、「書式とコピー/貼り付け」(ハケのボタン)をクリックする。
するとセルが点線で点滅してる状態になるので、 C2から数字が入ってるセルまでの範囲を選択
条件付き書式は、http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-syo.html 辺りを参考に。
すみません、さきほどの回答に間違いがありました。
-----------------
わざわざVBAを使わなくても、条件付き書式を使えばできそうです。
以下の例は、左の列がA1~A9まで数字が入力されていると仮定します。
(1) 右の列の最初のセル(例えばC1)にカーソルを移動して、メニューバーから「書式」→「条件付き書式」を選択
(2) 条件(1)に以下を設定
「数式が」
「=ISERROR(VLOOKUP(C1,$A$1:$A$9,1,FALSE))」
さらに、[書式]をクリックして、パターンから赤い色を選択し[OK]
(A列からVLOOKUP関数を使って探して、データが存在しなければISERROR関数がTRUEを返す)
(3) [追加]ボタンをクリックして条件を追加
(4) 条件(2)に以下を設定
「数式が」
「=NOT(ISERROR(VLOOKUP(C1,$A$1:$A$9,1,FALSE)))」
さらに、[書式]をクリックして、パターンから青い色を選択し[OK]
(A列からVLOOKUP関数を使って探して、データが存在すればISERROR関数がFALSEを返すので、NOT関数で逆のTRUEを返すようにした)
(5)C1が選択されている状態から、「書式とコピー/貼り付け」(ハケのボタン)をクリックする。
するとセルが点線で点滅してる状態になるので、 C2から数字が入ってるセルまでの範囲を選択
条件付き書式は、http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-syo.html 辺りを参考に。
マクロだと
Sub Macro() Dim i As Long Dim obj As Object i = 1 While Cells(i, 3).Value <> "" Set obj = Range("A:A").Find(Cells(i, 3).Value) If obj Is Nothing Then Cells(i, 3).Interior.ColorIndex = 3 Else Cells(i, 3).Interior.ColorIndex = 5 End If i = i + 1 Wend End Sub
ただし、これは条件付書式でできます。
C1セルの条件付き書式で数式を
青なら
=COUNTIF(A:A,C1)>=1
赤なら
=COUNTIF(A:A,C1)=0
にすればいいです。
マクロではなくて、条件付き書式で。
リストはA1~A100に収まっているとします。
C1のセルに条件付き書式で以下のように設定します。
条件1
「数式が」 =NOT(ISNA(VLOOKUP(C1,A$1:A$100,1,FALSE)))
書式を青に設定
条件2
「数式が」 =C1<>""
書式を赤に設定
あとは、C1をコピーして、必要なC列のセルに「形式を選択して貼り付け」で
書式だけコピーしていけばOKです。
条件1のVLOOKUP(C1,A$1:A$100,1,FALSE)では、A1~A100の中からC1の値に
完全一致でHitするものを探してきます。
Hitしたら該当するA列の値を返し、なければ#N/Aを返すので、NOT(ISNA())で判定。
条件成立(リストに見つけた)なら書式が青なり、そうでない場合は条件2を見ます。
条件2では入力値があれば書式を赤に、なければ書式指定なしとしています。
扱うデータは文字列でも数字でもOKのはずです。
ただし、たとえば数値の100がリストにあっても、文字列の100はHitしません。
コメント(0件)