VBAで行の表示順が違うシートどうしを比較する方法

このQ&Aのポイント
  • VBAを使用して、行の表示順が異なる2つのシートを比較する方法について教えてください。
  • 具体的には、企業名と評価が記載された2つのシートを比較し、変更された評価を赤字で表示させたいです。
  • また、比較するシート名をセルに入力することで、将来も利用できるようにしたいです。
回答を見る
  • ベストアンサー

VBAで、行の表示順が違うシートどうしを比較したい

下記のように、企業名と評価が約200行ある今月と前月のシートを比較したいと思います。 行の表示順が違うシートどうしを比較し、 今月の2014.08シートの、評価が変更されたセルの文字を赤字で表示させたいのですが。 また来月からも使えるように、例えばセルF1に比較したいシート名を打ち込んで、 将来も使えるようにしたいです。 何卒よろしくお願いいたします。 企業名 A社評価 B社評価 C社評価 2014.08シート トヨタ A AA B 富士通 B AA A ソニー B BB C タカタ BB A C : 2014.07シート ソニー C BB C トヨタ A AA B タカタ BB A C 富士通 A AA A :

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! >また来月からも使えるように、例えばセルF1に比較したいシート名を打ち込んで とありますので、「2014.08」SheetのF1セルに比較したいSheet名を入力するとしての一例です。 ↓の画像で左側が「2014.07」Sheetで右側が「2014.08」Sheetとします。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り、マクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, lastRow As Long Dim str As String, c As Range, wS As Worksheet With Worksheets("2014.08") str = .Range("F1") Set wS = Worksheets(str) lastRow = .Cells(Rows.Count, "A").End(xlUp).Row Range(.Cells(2, "B"), .Cells(lastRow, "D")).Interior.ColorIndex = xlNone For i = 2 To lastRow Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then For j = 2 To 4 If .Cells(i, j) <> wS.Cells(c.Row, j) Then .Cells(i, j).Interior.ColorIndex = 6 '←黄色 End If Next j End If Next i End With End Sub 'この行まで ※ 評価が変わったセルは「黄色」にしています。m(_ _)m

ok123a
質問者

お礼

出来ました。ありがとうございます! ご丁寧に細かくに説明いだだき、また図も入れていただき助かりました。 感謝です!ほんとうにありがとうございます。 m(_ _)m

関連するQ&A

  • エクセルでの複数シートの比較

    【シート1】 A B C D 1 A社 B社 C社 D社 2 50 30 20 80 3 あ い う え 4 aa bb cc dd 【シート2】 A B C D 1 A社 B社 C社 D社 2 50 30 20 80 3 あ い う こ 4 aa bbb cc dd こういった風に、基本的に同じデータ構造で作られたデータがあった時に 2つのシートで、入力されてるデータが違うかをチェックしたい時、 (ここではD3とB4のセルのデータが書き換わってる) どういった風なやり方が考えられますか? 方法としては、関数、マクロ、VBA等あると思いますが、 当方初心者に毛のはえた程度のレベルですので、 関数ぐらいしか分かりません(-_-;) ●同一ブック内にあるシートの比較 ●別ブック内にあるシートの比較   の2種類が知りたいです。 ○ここではD3とB4のセルの内容が違うということが分かればいいのです。  (D3・・・【シート1】え、【シート2】こ)←ここまで分かると必要はないです。 よろしくお願い致します。

  • Excel VBA で二つのシートを比較抽出

    Excel VBA で二つのシートを比較して合致するレコードを別のシートに抽出する方法について 下記ホームページのコードを利用させていただきました。 https://okwave.jp/qa/q5917011.html ●fax2シート B列(検索順)  セル1 A    2 B    3 D    4 C ●fax3シート( 比較抽出結果)  セル1 A    2 B    3 C    4 D 比較抽出結果が検索順にするにはどのようにコードを記述すればよいか教えていただけますか。

  • sheet1(1月)からsheet12(12月)をsheet13(H17年度)に集計したい

    sheet1(1月) A   B  C 1 得意先  銀行  金額 2 aa社 xx 50 3 cc店 yy 30 4 ee社 xx 20 sheet2(2月)   A B C 1 bb zz 50 2 ee xx 30 3 cc yy 50 4 dd ww 30 目的のsheet sheet13(H17年度) A     B    C    D 1 得意先  1月   2月   3月 2 aa社   50   3 bb社 50 4 cc社 30 50 5 dd社 30 6 ee社 20 30

  • sheet1から抽出しsheet2へコピーをVBAで

    VBA初心者です。色々本など見たのですがどうして良いか判らず質問させて頂きます。 sheet2のA1にデータを入力したら、sheet1のA列に同じデータがあるかどうか探してある場合は、その行をsheet2の6行目からコピーをさせたいのですが、 (1)sheet1のデータは下に追加していきます。 (2)sheet2のデータ貼り付けは詰めて貼り付けていきたい。 sheet1  A   B    C 1 -  -   -   2 -  -   - 3 -  -   -    4 社名 商品名 入荷数 5 A社    ○    10 6 B社    △    5 7 C社    ■    20 8 A社    ×    30 9 D社    ○    10  ・ ・   ・    ・ ・ ・   ・    ・ ・ ・   ・    ・ sheet2  A   B    C    1 A社  -   -  2 -   -   -  3 -   -   -  4 -   -   -  5 社名 商品名 入荷数 6 A社    ○    10 7 A社    ×    30 ・ ・   ・    ・ ・ ・   ・    ・ ・ ・   ・    ・ -はブランクセル 色々試したのですが、sheet2にコピーはされてもブランクの行が詰まらないなど上手くいかないため教えて頂きたく質問させて頂きました。 宜しくお願いいたします。

  • VBAでの差分比較のマクロの組み方について

    VBA初心者です。 シートCの開始ボタンを押下すると、シートAの表とシートBの表のセル内の数式を取得・比較して、シートCの表に差分箇所に色が付く。 ↑のような形で差分比較をするマクロを組みたいのですが、ネットで調べてもうまく作ることができませんでした。 組み方は色々あるかと思いますが、その一例をお教えいただけると幸いです。 よろしくお願いいたします。 (補足) シートAの表とシートBの表の形式は同一で、例えばそれぞれセルの(1,1)〜(150,50)まであるようなイメージです。

  • VBAの行変更について

    例  (1)sheet1のセルA1,B1を入力専用(シート名:入力)とする  (2)入力する  (3)sheet2のA1,B1に転記される  (4)(1)を繰り返す  (5)sheet2の行が変わる(A2,B2)  (6)(4)と(5)を繰り返す  (7)(5)がA5,B5まで転記されると自動的にC1,D1に転記される  (8)(7)がC5,D5まで転記されると『データがいっぱいです』のメッセージがでる この説明でわかりますでしょうか。

  • Sheet2にある情報をSheet1のA1に1列で

    マクロを作りたいのですが、以下のようなものをどうすればできるかで詰まっています。 Sheet2にある情報をSheet1のA1に1列(A列B列C列の順)で並ぶようにしたいです。 Sheet2の内容は変わることがあるので、データがどの行まで入っているかはマクロを走らせるときにチェックしないとわからないかと思います。 [Sheet1] 111 222 333 aa bb aaa bbb ccc ddd eee -------------------------- [Sheet2] A B C 1 111 aa aaa 2 222 bb bbb 3 333 ccc 4 ddd 5 eee 素人な質問かもしれないですが、調べてもわからなかったので、教えていただけると幸いです。

  • Excel>他シートと文字比較後のリスト表示方法?

    始めて投稿します。 エクセルで以下のことを実施したいのですがどうしても できずに詰まっています。 知恵をいただけないでしょうか。 ------------------------------------------------ ※イメージ画像を添付しています。 「Sheet1の分類」の値と、「Sheet2の分類」の値が等しかった場合、 Sheet1の「コース名」箇所に、Sheet2で一致した分類の隣セルにある コース名のリストを表示したいのです。 その方法を教えていただけないでしょうか。 【Sheet1】    A    B      1 分類  コース名    2 1.A          ←BセルにSheet2と一致したコース名のリストを表示させたい 3 1.A 4 2.B 5  : 【Sheet2】     A     B     C 1 コード   分類    コース名 2  A     1.A     あ 3  B     1.A     い 4  C     1.A     う 5  D     2.B     か 6  E     2.B     き 7  :      :      : 出来たら、エクセルの関数だけでどうにかなるといいなと思っていますが、 マクロを使って解決するならばそれでも構わないと思っています。 アドバイスをいただけないでしょうか。 以上、よろしくお願いいたします。

  • 二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセル

    二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセルの値を 別のシートに設定するには、どうしたらいいでしょうか? [シート1] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? 02|A2 yyy 03|B1 ??? 04|C1 sss [シート2] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 aaa 02|A3 bbb 03|B0 xxx 04|B1 ccc 05|C1 sss シート1 [Aのセル]とシート2の[Aのセル] を比較し、同じ値だった場合に、 シート2の [B] の値を シート1の[C]に設定するための関数はどのようにしたら良いでしょうか? 最終的に、シート1が --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? aaa 02|A2 yyy 03|B1 ??? ccc 04|C1 sss sss となります。 Excelの関数あマクロは、どうしても分からなく質問させてもらいました。 申し訳ありませんが、ご教授宜しくお願い致します。

  • EXCELでセル(文字列)と任意のシートの行を比較して結果を出力したいのですが・・・

    初投稿させていただきます。宜しくお願い致します。 office系のソフトは初心者で何とかならないものかと悩んでます。 excelで特定のセルのデータと行全体を比較して、一致する文字列を含んだセルを返してほしいのです。 それを各セルごとに行い、まとめて別のシートに出力させることは可能でしょうか? たとえば   A    B    C 1 あい  い   う 2 いか  う   えい 3 うみ  え   お 4 えい  お   か 5 うさ  か   き があって Cの各セルとA行全体を比較して結果を別に出力  ・・・ D 1    A3,A5 2    A4 3 4 5 ない場合は空白でも×でもいいのですが こんな感じにできないでしょうか。 実際のデータはファイルが別になっていてファイルAのC行とファイルBのB行のセル(200個くらい)との比較といった感じです。 いろいろ調べては見たのですが、うまくいかず・・・ 欲張った内容かも知れません。 すみませんがどなたかいい方法を教えて頂けませんか。

専門家に質問してみよう