比較し色塗りしていく方法と方法2

このQ&Aのポイント
  • A列とC列を比較して、C列の値がA列に含まれていれば赤色に色塗りします。
  • A列とB列とC列を比較して、C列の値がA列とB列の両方に含まれていれば緑色に色塗りします。
  • 上記の作業を行うために、EXCELの操作方法を教えていただけませんか?
回答を見る
  • ベストアンサー

【マクロ】列比較し色塗りしていく

   A             B               C 1 豚汁           豚の角煮          カレー 2 カレーライス      クリームカレー        煮    3 味噌汁         ハンバーグシチュー    ライス   4 ハンバーグ       赤飯             シチュー 5 オムレツ        鯖の味噌煮 6 オムライス 7 豚汁   EXCELに上記のようにA列、B列、C列にメニューが書いてあります。 【やりたいこと2点】 (1)A列とC列を比較 上から順にC列に入っている文字がA列のいずれかに含まれて(部分一致して)いれば、 セルを赤色に色塗り。 例)C1の「カレー」はA列の「カレーライス」に部分一致していますので 『C1』のセルを赤塗り、続いてC2の「煮」はA列のいずれかにも一致していないので、そのまま。 C3の「ライス」は「カレーライス」「オムライス」に部分一致していますので 『C3』のセルを赤塗り・・・・・ というように、C列に入っている値を上から順に見て行き赤塗りorそのままというように チェックを行いたいです。 (2)A列とB列とC列を比較 上から順にC列に入っている文字がA列、B列のどちらにも含まれていれば(部分一致)していれば、 セルを緑色に色塗り。 ※(1)の作業で赤塗になった箇所は上書きで緑になってOKです。 例)C1の「カレー」はA列の「カレーライス」B列の「クリームカレー」に部分一致しているので 『C1』のセルを"赤塗り"⇒"緑塗り"に変更、続いてC2の「煮」はB列に部分一致するメニューがあるが A列には存在しないので、セルの色はそのまま。 というように、Cの列に入っている値を上から順に見て行き緑塗りorそのままというように チェックを行いたいです。 お手数おかけ致しますがご教示お願い出来ませんでしょうか。 どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 Sub sample() For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row mycl = xlNone Set a = Columns("A:A").Find(Cells(i, "C")) If Not a Is Nothing Then Set a = Columns("B:B").Find(Cells(i, "C")) If Not a Is Nothing Then mycl = 4 Else mycl = 3 End If End If Cells(i, "C").Interior.ColorIndex = mycl Next End Sub

nanacolobiyaoki
質問者

お礼

早速のご回答まことにありがとうございました。 無事できました。 今後、応用が利くようにとソースの理解を一生懸命頑張っておりますが・・ 難しいです。。ネットで検索しながら意味を調べてゆきます。 本当にありがとうございました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

マクロで行うことのメリットはさほど無いように思いますね。通常の条件付き書式を設定することで十分でしょう。 例えばC列を選択します。C1セルがアクティブセルの状態になっています。 そこで「条件付き書式」の設定で「数式が・・・」で数式の窓には最初の条件の設定でしたら次の式を入力して「書式」で「塗りつぶし」のタブから赤色を選択してOKします。 =AND(C1<>"",COUNTIF(A:A,"*"&C1&"*")>0) 次に第2の条件ですが同じようにC列を選択して「条件付き書式」の「数式で・・」で数式の窓には次の式を入力します。 =AND(C1<>"",AND(COUNTIF(A:A,"*"&C1&"*")>0,COUNTIF(B:B,"*"&C1&"*")>0)) 「書式」の塗りつぶしのタブから緑色を選択してOKします。 以上で完成です。

nanacolobiyaoki
質問者

お礼

条件付き書式でもできるのですね。 すごく勉強になりました。 マクロだけではなく他の方法(条件付き書式)なども頭に入れながら やらないとダメですね。 早速のご回答まことにありがとうございました。

  • yui56544
  • ベストアンサー率69% (85/123)
回答No.1

EXCELのバージョンは何をお使いですか? マクロでなくとも、エクセルの基本機能「条件付き書式」で充分可能だと思います http://www2.odn.ne.jp/excel/waza/cformat.htm http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-syo.htmll マクロでやるなら、これのベストアンサーを参考しては如何でしょうか? http://okwave.jp/qa/q4878190.html

nanacolobiyaoki
質問者

お礼

早速のご回答ありがとうございました。 条件付き書式のURLが2つとも飛ばず確認することができませんでしたが、 今回はマクロで頑張ってみようと思います。 マクロの参考URLを元に応用して頑張ってみます。 ありがとうございました。

関連するQ&A

  • マクロ【特定の列同士の比較方法】

    いつも大変御世話になります。 【D:\test】フォルダ内に、1つのエクセルファイル(Excel2003)があります。 ・エクセルファイル名は【test.xls】。 ・シート【起動シート】と【test】があります。 今回悩んでいるのはシート名【起動シート】内にあるマクロボタンに入れるマクロです。 理想の処理は以下のようになります。 シート【test】には以下のような文字が入力されています。      A     B     C     D  ←列 1        GoodList      BadList  2         L2008       L2009 3         L2009       L2015 4         L2010         5         L2015         6         L2030 ↑行 このB列のL~が入力されているセルと、D列ののL~が入力されているセルの文字を比較し、 D列に入っているセル文字と一致したら、B列のそれと同じ文字が入力されているセル文字を消す。 つまり上記例だと以下のようになります。      A     B     C     D  ←列 1        GoodList      BadList  2         L2008       L2009 3          (空白)       L2015 4         L2010         5          (空白) 6         L2030             さらにそのB列で消えたセル(この場合B3とB5)を空白部分を上に詰めて以下のようにする。              A     B     C     D  ←列 1        GoodList       BadList  2         L2008        L2009 3         L2010        L2015 4         L2030                  5        6                      このようなマクロは可能でしょうか?関数ではなく、ぜひマクロで実施したいです。 ちなみに、C列には関係のない文字が入力されていますが、ここでは省略しております。 あくまで比較対象はB列とD列です。 ネット上に情報があるかと思い調べましたが、なかなかそういった処理方法にはであえませんでした。 何か簡単なサンプルコードをご教授願いますでしょうか? 余りにも初歩的な質問で申し訳ありませんが、宜しくお願い致します。

  • 列ごとの数値の一致と不一致を調べるVBAについて

    画像のように各列ごとにランダムな数値が入力されています。この時に各列ごとに同じ数値が入っているかいないかを調べたいのですが、どのようにプログラムを作ればいいかわからなく質問しました。 画像の内容としては、列Aのセル中の数値と列Bのセル中の数値は一致しないのでB15セルに"1" 列Aのセル中の数値と列Cのセル中の数値は『66』が一致するのでC15セルには何も入力せず というように D15セルは列Aと列Dの一致、不一致の結果 C16セルは列Bと列Cの一致、不一致の結果 D16セルは列Bと列Dの一致、不一致の結果 D17セルは列Cと列Dの一致、不一致の結果 を入力できるプログラムがあれば教えていただければ幸いです。よろしくお願いします。

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • 列比較での値コピーについて

    エクセルに詳しくなく、2回に分けての操作でも構いませんので、簡単なやり方を教えてください。 A列の各セルに文字が並んでいます。 C列にも同様に文字が並んでいるのですが、A列とは並び順が異なります。 C列のセルをA列と比較し、文字が同一のセルがあれば、そのセルの隣のB列のセルの文字をC列の隣のD列のセルにコピーしたいと考えています。 具体的には、C1の文字をA列と比較し、仮にA300の文字と同一となれば、B300の文字をD1のセルにコピーをするということです。 同様に、C2の文字をA列と比較してを繰り返す感じです。 よろしくお願いします。

  • エクセル2003ですが、A列(500行に氏名が500人分記述)、、、

    エクセル2003ですが、A列(500行に氏名が500人分記述されています)、この状態で、この500人の中から該当者のみ、黄色でセルを色塗り(バケツのツール)ました。 で、該当者を見るとき、A列をずーと下までみるのが面倒なので、B列にこのA列で黄色にいろ塗りした氏名のメンバーのみを集めたいのですが、、、 可能でしょうか? (A列で黄色くいろ塗りしたら、リアルで即、B列に反映した表示されるというものをイメージしているのですが、、、 宜しくご教示ください。

  • エクセル VBAで色塗りについて教えてください

    VBA初心者です。 例えばB列2行目から下に(1)~(7)までの番号を不規則に入力することにより F列11~17行目に1セルずつ右へ色塗りをしていくにはどうプログラムをかいたらよいでしょうか? 番号によって、色塗りの行と色は決まっています。 (1)→11行目、黄色 (2)→12行目、青色 (3)→13行目、赤色 (4)→14行目、緑色 (5)→15行目、白色 (6)→16行目、黒色 (7)→17行目、茶色 また色塗りはF列からBD列までで終了です。 番号の入力回数の多いものが色塗りを早く終了できることになります。 VBAの本をみながら試行錯誤していましたが、うまくできず… どなたか詳しい方、お力を貸してください。

  • Excel比較関数について教えてください。2

    下記のようにA列とC列を比較して、 一致した値が存在する場合、B列とC列を比較して、 E列に全て一致した場合は○、一致しない場合は×にしたいのですが教えてください。 また、A列にあってC列にない場合は、×を表示したいです。 A列 B列 C列 D列 E列 1 12345 aaa 12389 aaa A1とA3が一致&B1とD3が一致したので○ 2 12389 bbb 22222 bbb A2とC1が一致したが、B2とD1が一致しないので× 3 33333 bbb 12345 aaa A3の値がC列にないので空欄 教えてください。

  • 文字列の比較

    excelvbaです。(excel2003) 3個のセル(a1,b1,c1)に文字列が入っています。 このそれぞれ文字列の右8桁を比較し、 最小の文字列が入っているセルに色を付けたいのです。 調べたら、minは使えませんし、dminがありましたが、 right(range("A1").value,8)をどう扱うかが分かりません。 出来ましたら、dminでなく他の方法が在ればベターです。 宜しくお願いします。

  • エクセルマクロ重複した列を削除した結果を抽出したい

    お世話になります。 各行で、重複したセルを除いた文字列を結合してA列へ表示させたいのですが、全然わからず困っています。宜しくお願い致します。 【抽出前】 セルB2:あいうえお セルC2:かきくけこ セルD2:さしすせそ セルE2:あいうえお セルB3:たちつてと セルC3:らりるれろ セルD3:たちつてと         ・         ・         ・ 【抽出後】 ※重複した部分を除いた抽出結果を、A列に表示させたい セルA2:あいうえおかきくけこさしすせそ セルA3:たちつてとらりるれろ         ・         ・         ・ 【補足】 ※列数は決まっていません。値が入っているところ迄、となります。例では最長E列迄になっておりますが、もっと長い場合もあれば、B列だけの場合もあります。 ※行数は、数100行あります。こちらも値が入っているところ迄、抽出結果をA列のA2から順番に表示させたいです。

  • 条件付き書式で色塗りしたセルをカウント マクロ 

    数値がランダムに入っている表に条件付き書式で指定の数式に合致するとセルを色塗りするよう設定しあります。その色塗りしたセルをカウントするにはどうすればよいか検索していましたら、下記にマクロでの手法が説明されていましたが、マクロに詳しくないので、どう利用したらよいかわかりません。 http://keep-on.com/excelyou/1999lng4/199908/99080044.txt たとえば、A1:Y30の範囲の表があるとして、1行ごとに色塗りしたセルをカウントしたいです。Z1,Z2,Z3,Z4...にそれぞれ結果が表示されるようにするには、上記のマクロ(もしくは違う方法)をどのように使用したらよいんでしょうか? ちなみに1列おきにカウントしたくない列が入っているので、COUNTIF関数を使わないでやりたいんです。色のついたセルを定義してやる方法もありましたが、条件付き書式では不可能とわかりましたので、上記の方法しかないのかなと思うんですが。詳しい方、教えてください。

専門家に質問してみよう