• 締切済み

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

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

みんなの回答

  • kon555
  • ベストアンサー率52% (1747/3349)
回答No.2

 このページが参考になると思います。まさに貴方がやろうとしている、シート比較コードです。 https://kirinote.com/excelvba-anothersheet-hikaku/  まずは貴方のデータでこれを試してみて、細かい部分を修正してみると勉強になると思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>差分(比較) >VBAで 難しい言葉を使うだけで、何をしたいのか、判りません。 シートAの1つのセルとシーとBの1つのセルを引き算するのか? (1)そのとき、両者の番地は同じか(シートAのB2とシートBのB2のように) (2)例えば、シートAのB2の値とシートBのB2はどのように計算するのか?   計算で出る数字でなく、所与のデータか(例えば売上高)? そういうことを、少数のデータ例ででも挙げて、質問するものだよ。 ーー VBAコードを書くのは早すぎるようだ。 勝手に言わせてもらうと,下記のデータはでたらめですが、 データ例 Sheet1 A1:C3 23 22 34 45 16 54 56 15 26 Sheet2 A1:C3 34 43 22 23 56 31 16 78 27 Sheet3でA1に =Sheet1!A1-Sheet2!A1 この式を縦横に複写 Sheet3 A1:C3は 対応する番地セルの引き算 -11 -21 12 22 -40 23 40 -63 -1 ホームー条件付き書式ー数式で・・ 数式 =ABS(A1)<10 絶対値が10未満なら セルの塗りつぶしの色を設定 == VBAなど必要ない。当方が質問のとりちがえしてる?

関連するQ&A

  • 全シート内の差分比較とそのセル色塗りつぶしマクロ

    Excelファイルデータの差分比較とそのセル塗りつぶしのマクロを作成したいのですが、今の自分には、下記のマクロでとどまっており、 マクロを実行するファイル内シートにデータをコピーしたり、 マクロ内でその都度、シート名の記載の変更、差分比較データ範囲の変更が必要になり、大変不便で困っております。 やりたい事は、マクロでユーザがExcelのファイルを選択出来て、 そのファイルの中の全シートのデータについて、差分比較とそのそのセルの塗りつぶしをして、塗りつぶしをファイルへ反映させて保存させることです。 どうか、お分かりの方がいらっしゃいましたら、ご教示をお願い出来ますと大変助かります。 各シート内のデータは、列、行共にほぼ同じフォーマットで値が入っています。 それらのシート内のデータで修正した箇所を見つける為、差分比較がしたいです。 例えば、シートが3つの場合は、 1つ目のシートは修正前のデータ、 2つ目のシート内は1つ目のシートの値を部分的に修正したものです。 3つ目のシート内のデータも、1つ目のデータの値を更に再修正したものです。 この3つのシート内のデータを差分比較したいです。 シートの数は、選択したファイルによって異なります。 Sub TEST1() Dim s1, s2 As Worksheet 'Worksheetsオブジェクト用 Set s1 = Worksheets("修正前S装置検索システム") '比較元シート名 Set s2 = Worksheets("修正後装置検索システム") '比較先シート名 Dim arr1 As Variant, arr2 As Variant arr1 = s1.Range("$A$2:$W$548").Value arr2 = s2.Range("$A$2:$W$548").Value For i = 1 To UBound(arr1, 1) For j = 1 To UBound(arr1, 2) If arr1(i, j) <> arr2(i, j) Then '塗りつぶし処理 s1.Cells(i + 1, j).Interior.Color = RGB(255, 0, 0) s2.Cells(i + 1, j).Interior.Color = RGB(102, 255, 51) End If Next Next End Sub

  • 【VBA】マクロについて

    【VBA】マクロについて質問です。 マクロで複数のシートの特定のセル(A5(日付)、A7(社名)、B3(担当者)など)を別ブックのひとつのシートにまとめて、 日付 社名 担当者 シート1 A5 A7 B3 シート2 A5 A7 B3 シート3 A5 A7 B3 のように下へ下へ積み上げていくにはどうゆうマクロを組めばいいでしょうか。 同じ作業を複数のファイルで行わなければいけないため、マクロを組みたいのですが、よくわかりません>< ファイルによってシートの数が違うので、それにも対応すると有難いです。 どうぞよろしくお願いいたします。

  • EXCEL VBA マクロ 日付

    こんばんわ。 EXCEL VBA マクロ の日付について質問があります。 セル"A1"で"年"(例:2008)、セル"B1"で"月"(例:5)を指定します。 C1からC500くらいまで(毎日増えていきます)日付が入っています。 A1、B1で指定した年月と同じC列の日付を 10桁スラッシュ区切りの形式(例:2008/05/15)で 右隣のセル(D列)にコピーしたいんです。 困ったことにC列は形式が決まっているわけではありません。 たとえば、2008年5月15日の場合、 ・20080515・2008年5月15日・2008.05.15・2008.5.15 ・2008/05/15・2008/5/15・08/05/15・2008-5-15 その他、いろいろ考えられます。 これをマクロでやるにはどうすればいいでしょうか。 毎月一回実行します。 日付の形式をチェックするところで やり方がわからなくて困っています。 よろしくお願いします。

  • 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 比較抽出結果が検索順にするにはどのようにコードを記述すればよいか教えていただけますか。

  • 配列数式を用いたエクセルマクロの使い方

    セルA1に「=SUM((A1:A12=5)*(B1:B12=""A"")*C1:C12)」という風に数式を表示形式を文字列として入れておき、他のセルに、この計算結果を入れるたいのですが、マクロでどのようにすればいいか、ご存知のかたがいらっしゃいましたら教えてください。 ちなみに、使用したい数式(セルA1に入れているもの)は配列数式です。

  • VBAマクロでCSV出力

    はじめまして、よろしくお願いします。 ExcelのVBAマクロで 特定のセルの範囲を「シート名.csv」で出力するようなプログラムを書きたいです。 例)シート名「TEST」内にあるマクロボタンを押すと  A1:A10のセルの内容が「TEST.csv」(アスキー形式ならなんでも)  に出力される。 どういうやり方があるか、お勧めのサイト等、 ご教授いただけないでしょうか? 以上、よろしくお願いいたします。

  • 文字列を比較し、相違するフォント色を変える

    お世話になります。 環境はWinXPエクセル2003、初心者です。 A列とB列に入っている文字情報を比較して、B列の異なる部分のみフォント色を変えるという設定は、 1.条件付き書式の数式(関数)で可能ですか? 2.もしくは、数式(関数)でC列に異なる部分を抽出できますか? マクロでないと無理という事でしたら、 A列の任意のセルを選択した状態から開始して連続してデータが入っているところまでを範囲としたいです。 過去の質問を検索したところ、 VBAでA1のセルとA2のセル比較で、A2のフォント色が赤くなるという回答は発見出来ました。 http://okwave.jp/qa4040787.html よろしくお願いします。

  • エクセルのマクロで、セルの値を参照してジャンプ

    エクセルのマクロで、セルの値を参照して、 別シートにジャンプして貼り付けたいと思っています。 <Sheet1>  |  A  B  C ------------------------------------ 1|  A1  あ  100 2|  B5  い  50 3|  C7  う  80 4|  D3  え  20 5|  E9  お  40 <Sheet2>  |  A  B  C  D  E ------------------------------------ 1|  あ 2|  100 3|         え 4|         20 5|    い 6|    50 7|       う 8|       80 9|            お 10|            40 といったイメージです。(お分かり頂けますか?) Sheets1!B1:C1を選択し、A1のセルの値を参照して、Sheets2!A1にジャンプして、 行列入れ替えて貼り付ける、といったマクロを組みたいのですが、 セルの値を参照する部分が分かりません。 実際はSheets2の様なシートは複数あり、1つのリストから複数の形式を変えた表を 作りたいと思っています。 Sheets2以降のシートに見出し行を加え、VLOOK関数を組み込んだ表を作っておき、 結果を貼り付けて見出し行を削除する、といったマクロは組めるのですが、 セルを参照してジャンプして貼り付けてくれると便利だと思い質問させて頂きました。 どなたかお知恵を拝借できましたら嬉しいです。 宜しくお願い致しますm(_ _)m

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

  • エクセルの数式

    すいません。またお力を貸して下さい。 マクロでプログラムを組みたいのですが、 例として シート1のA1セルに「50」、B1セルに 「-5」、C1セルに「0」が入力されていたとします。それをシート2のA1セルに数式として「=50-5+0」と表示させるようにしたいのです。(A1セル自体に単に「45」と表示されるだけでなく。) 「=A1+B1+C1」のような形式では困るのです。 どなたか解決法をお教え下さい。

専門家に質問してみよう