1205139256 マクロの簡単なの質問をさせて下さい。


①右の列にある数字が、左の列にある場合は青色。
②右の列にある数字が、左の列にない場合は赤色。

というマクロを作りたいのですが、コードを教えて下さい。お願い致します。

あと、例は数字にしたのですが、文字に対応できるもだと助かります。

回答の条件
  • 1人2回まで
  • 登録:2008/03/10 17:54:18
  • 終了:2008/03/17 17:55:02

回答(6件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/03/10 18:19:47

ポイント19pt

マクロとは、Excel VBAのことという前提で回答します。

ifステートメントとColorIndexプロパティを使って実現できます。具体的な方法については下記を参照下さい。

id:beatgoeson No.2

beatgoeson回答回数128ベストアンサー獲得回数142008/03/10 18:53:54

ポイント19pt

わざわざ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 辺りを参考に。

id:beatgoeson No.3

beatgoeson回答回数128ベストアンサー獲得回数142008/03/10 18:58:23

ポイント18pt

すみません、さきほどの回答に間違いがありました。

-----------------

わざわざ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 辺りを参考に。

id:SALINGER No.4

SALINGER回答回数3454ベストアンサー獲得回数9692008/03/10 19:31:01

ポイント18pt

マクロだと

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

にすればいいです。

id:dungeon-master No.5

dungeon-master回答回数571ベストアンサー獲得回数402008/03/10 19:36:37

ポイント18pt

マクロではなくて、条件付き書式で。


リストは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しません。

id:nave2000 No.6

nave2000回答回数26ベストアンサー獲得回数02008/03/11 01:01:36

ポイント18pt

Excelならば、マクロを作らなくても条件付書式というものを利用できます。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-syo.html

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません