• 締切済み

エクセルで2つのファイルを差分して、追加・削除されたそれぞれのファイルのデータセルを色で塗る。

エクセルで2つのファイルを差分して、追加・削除されたそれぞれのファイルのデータセルを色で塗る。変更のないものは元ファイルから新ファイルへセル内容をコピーするというVBAは可能でしょうか? 例)元ファイル、新ファイルにおいてA列を差分。 元ファイル 新ファイル   A   B    A   B 1 aa1  bb1   aa1 2 aa2  bb2   aa3 3 aa3  bb3   aaA 4 aa4  bb4   aa4 とあるとします。 追加>新ファイルのA3セルを塗る。 削除>元ファイルのA2セルを塗る。 変更なし>新ファイルのB1、B2、B4へ元ファイルのB1、B3、B4のデータをコピペ。 元ファイル 新ファイル   A   B    A   B 1 aa1  bb1   aa1  bb1 2 aa2  bb2   aa3  bb3 3 aa3  bb3   aaA 4 aa4  bb4   aa4  bb4 このような感じです。 どうぞよろしくお願いします。

みんなの回答

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

質問者はデータベースとかプログラムとかを考えたことが無いのであろう、こともなげに差分とか言うが、両者の行(レコード)および項目(列)を結びつけるれこーどのキーのようなものが、両方に存在しないとそもそもこの議論ができないのに気づいていない。私の言うことを良く考えてみてください。

errie217
質問者

補足

すいません。差分という言い方がまずかったでしょうか。 下記を元に作業用シートを作らず、更新前、更新後のシート上で処理が出来ればと悩んでいます。 Sub Sabun() Dim myRB As Long '更新前データを操作する行番号 Dim myRA As Long '更新後データを操作する行番号 Dim myDel As Boolean '削除を判断するフラグ変数 Dim myAdd As Boolean '追加を判断するフラグ変数 '作業用シートのデータを消去 Worksheets("作業用").Cells.Delete '作業用シートに更新前後の2つの表をコピー Worksheets("更新前").Range("A1").CurrentRegion.Copy Destination:= _ Worksheets("作業用").Range("A1") Worksheets("更新後").Range("A1").CurrentRegion.Copy Destination:= _ Worksheets("作業用").Range("F1") '作業用シートを選択 Worksheets("作業用").Select '表の列幅を自動調整 Columns("A:I").AutoFit '更新後削除されたデータをチェック myRB = 2 Do Until Cells(myRB, 2).Value = "" myDel = True myRA = 2 Do Until Cells(myRA, 7).Value = "" If Cells(myRB, 2).Value = Cells(myRA, 7).Value Then myDel = False Exit Do End If myRA = myRA + 1 Loop If myDel = True Then Cells(myRB, 2).Interior.ColorIndex = 37 End If myRB = myRB + 1 Loop '更新後追加されたデータをチェック myRA = 2 Do Until Cells(myRA, 7).Value = "" myAdd = True myRB = 2 Do Until Cells(myRB, 2).Value = "" If Cells(myRB, 2).Value = Cells(myRA, 7).Value Then myAdd = False Exit Do End If myRB = myRB + 1 Loop If myAdd = True Then Cells(myRA, 7).Interior.ColorIndex = 37 End If myRA = myRA + 1 Loop End Sub

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

たまたまですが、フリーソフトがありました。 http://www2.moug.net/cgi-bin/softwaredl.cgi?excel+SI2007070601​ 私は、使用した事ないので、ご自身でお試しください。

errie217
質問者

お礼

ありがとうございます。 少し思っているものと違うようなので...

関連するQ&A

  • エクセル2007で複数ファイル間コピーマクロ

    エクセルでマクロを組もうとしていますが、初歩的なことでつまづいており、ぜひ助けを頂けたらと思います。 VBA言語はほとんどわかりませんが、エクセルでマクロを組んでいます。 一つのワークブック内での登録は問題なく行えるのですが、ワークブック間のコピペをマクロに登録するとうまくいかず困っています。 やりたいことは以下のようなことです。 file.Aのsheet1のA1セル ⇒ file.AAのsheet1のA1セル へコピー file.Bのsheet1のA1セル ⇒ file.BBのsheet1のA1セル へコピー     ・     ・     ・     ・ file.Zのsheet1のA1セル ⇒ file.ZZのsheet1のA1セル へコピー VBAを確認すると、ワークブック名が指定されているため、うまく次のファイルに移行できずにいるようです。 以下が黄色でハイライトされます。 Windows("file.A").Activate 初歩的なことだとは思うのですが、なかなか検索で答えが引っ張りだせないので、A-Zのファイルをコピペできるマクロにするにはどのようにしたら可能なのか教えてください。 よろしくお願いします。

  • 差分バックアップ時、削除ファイルはどう扱われますか?

    仕事場のファイルサーバーのバックアップ方法を見直そうと考えております。いろいろ調べて、差分と増分の違いあたりまではわかったので、フルバックアップと差分バックアップの組み合わせで対処しようと考えています。 その際、ひとつだけ疑問が湧いてまいりました。 「フルバックアップ時に存在したファイルを変更後に削除し、差分バックアップをとった場合、削除直前の状態でリストアできるでしょうか?」 差分バックアップは最新のもののみ残すことを考えています。 1日目・・・フルバックアップ 2日目・・・ファイル変更、差分バックアップ 3日目・・・ファイル削除、差分バックアップ 4日目・・・リストア この時、3日目の削除前の状態(2日目のファイル変更時の状態)でリストア可能でしょうか? フルバックアップ時まで戻らなければならないのでしょうか? 宜しく御教示下さい。

  • VBAを使って、2つのファイルを比較したい

    OS Windows98 Excel2000 下記のとおり、2つのファイルがあるとします。 aaa.xls(比較元) bbb.xls(比較先) 内容はほとんど同じなのですが、 行や列が追加、或いは削除されている場合もあります。 1)追加されている場合 bbb.xlsよりaaa.xlsへコピペをする。 2)削除されている場合 aaa.xlsからセルの値を削除し、 それ以下の値を上へ詰める。 ここで問題なのは、 1)ページ毎に行数が決まっていない。 2)アイテム毎に1行ずつ空白の行がある。 3)追加或いは削除の場合のコピペを行う場合、   ページブレイクをどう扱うか。 4)連番等といったLOOP等を使ってできる基本になる   値が全くない。(わざわざ手動で追加してもよいが、   全部で20ファイル(比較元)、各ファイルには300以   上の行がある。) 5)セルによって、2つ以上のセル(上下どうし、或いは   隣どうし)が結合している場合もある。 以前、Excel98でVBAを使ってプログラムを書いたことはあ るのですが、Excel2000は初めての初心者同様のものです。 プログラムの内容を書いてもらえれば1番うれしいのです が、多分これだけの説明ではそういう訳にはいかないと思 います。 ですから、何らかのきっかけとなるアドバイスでも頂けれ ばと思ってここへ質問にきました。 よろしくお願いします。

  • Excelファイルを比較し、差分箇所に色をつけるには?

    VBA初心者です。 突如作成を依頼されてしまいました。 どなたかお手すきでしたら、よろしくお願いします。 まず2つのフォルダA(新しいデータのExcelファイル)、 フォルダB(古いデータのExcelファイル)があります。 それぞれには同じ名前のExcelファイルが200個近く入っているのですが、 新旧同じ名前同士のファイルを比較し、差分箇所に色をつけるという 作業をしたいのです。(新旧のファイルどちらにも色を付ける) できればフォルダAとフォルダBを選択したら勝手に処理してくれるという プログラムにしたいのですが、どのようにしたらよろしいでしょうか。 数値の比較ですが、範囲を指定してマッチしてなければ色付け、という 処理でもいいかな・・と思っております。 どうかよろしくお願いします。

  • HD革命 差分バックアップについて

    結局、差分バックアップのファイルをけすと復元できないのか、できるのかどちらなのでしょう。 ○○ 様 「HD革命/BackUp Easy」で行う差分バックアップは同期ではありません。 あくまで差分バックアップが実行された時点の状態を保存しています。 「HD 革命 / BackUp Easy」 にてバックアップを行いますと、初回は以下のファイルが作成されます。 ファイル名.hdf(バックアップファイル) ファイル名.hdm(管理ファイル) ファイル/フォルダ単位のバックアップのため、バックアップを行う際にファイルの保存場所などを管理ファイルに記録しております。 差分バックアップを行う場合、以上で作成された元となるバックアップファイルと管理ファイルを参照し、差分のバックアップを行います。 差分バックアップを実行するたびに、過去のバックアップファイルと、それに対応する 差分分をあわせて、最新状態がバックアップされます。 各世代では、今の状態と、元となったバックアップファイルの最初のバックアップ時の状態との違い部分のみをバックアップしています。 それ以前の世代での変更内容などは含んでいません。 ただし、差分バックアップの行われた履歴を管理しているため、 管理ファイルや、途中のバックアップファイルがひとつでも失われた場合、 復元が行えなくなります。 □□さまの説明だと、 削除されたデータは、削除されたという情報がバックアップされ、差分データから復元する際には復元されない> という事になろうかと思うのですが、 つまりこれは同期をしているということでしょうか。ここでの同期とはコピー元とコピー先を一致させる処理という意味です。 もし、HD革命の差分バックアップが同期的な機能だとしたら、 先述の通り、差分バックアップでは、各世代では、元となったバックアップファイル(hdfファイル)と、過去の差分バックアップファイルとの状態を比較しています。 そのため、差分バックアップファイルは、差分バックアップごとに増えていく ことになりますが、1つでも削除されたり、破損してしまいますと、次回の差分 バックアップや復元が実行できなくなってしまいます。 というくだりが理解できかねます。 同期をするのであれば、今までの差分バックアップファイルが消えても初回のバックアップファイルさえあれば復元できるのでは?と思えます。 もしくは、今まで差分バックアップファイルを利用して、同期をしていると考えればよろしいのでしょうか? ○○ 様  B時点では、bのファイルを削除した状態の差分バックアップに なるので、この時点(世代)のバックアップファイルを復元しても bはありません。 bのファイルを戻したい場合は、A時点のバックアップファイルを 復元する必要があります。 「HD革命/BackUp Easy」の差分バックアップでは、元となる バックアップファイル(hdfファイル)と管理ファイル(hdmファイル)を 参照し、差分のバックアップを行います。 差分バックアップを実行するたびに、過去のバックアップファイルと、 それに対応する差分分をあわせて、最新状態がバックアップされ新しい 差分バックアップファイルが作成されます。 ひとつのバックアップファイルを、1つの世代、として管理します。 復元を行う際には、任意の世代を選択することができますが、その世代で バックアップした時の状態のみが復元されることになります。 差分バックアップファイルは、差分バックアップごとに増えていく ことになりますが、1つでも削除されたり、破損してしまいますと、次回の差分 バックアップや復元が実行できなくなってしまいます。 また、hdf(バックアップファイル(hdf)、管理ファイル(hdm)、差分 バックアップファイル(hdi)は、すべて同じフォルダ内に保存されていることが 必要ですので、ご注意ください。 差分バックアップは、増えた分だけバックアップすると認識しておるのですが、バックアップを取った後に削除したファイルやフォルダはその後差分バックアップをした際、削除したファイルもバックアップされるのでしょうか。 例えば、      A時点 ⇒  B時点  ⇒  ?? a,b,c a,c      A時点でa,b,cファイルのバックアップを取り、B時点でbのファイルを消し、差分バックアップをとると、その後はa,b,cのファイルが残っているのか、bが消え、a.cが残っているのかどちらなのでしょうか。  いいかえると、B時点でのファイルを復元するとbが残っているのかということです。もし残らないとすれば以前バックアップしたファイルも全て残しておかなければ削除したファイルは元に戻らないという事になるのでしょうか

  • エクセルファイルのセル値に特定文字列を追加して別ファイルに

    VB2008でのプログラム方法についての相談です。以下の手順を実現したいです。 (1)エクセルファイルのあるセル中にあるデータを取得 例)A1セルの値"AA"、A2セルの値"BB"、A3セルの値"CC"..... (2)決まりきった特定文字列と(1)の値を結合 例)くっつけたい文字列 " "+AA ⇒ くっつけたい文字列"AA" くっつけたい文字列 " "+BB ⇒ くっつけたい文字列"BB" くっつけたい文字列 " "+CC ⇒ くっつけたい文字列"CC" (3)テキストファイルを生成 ○○○.txt 例) くっつけたい文字列"AA" くっつけたい文字列"BB" くっつけたい文字列"CC"

  • perlでファイルを分割してファイル名も出力したい

    >AA A AAA aaaaaaaaaaaaaaa aaaaaaaaaaaa >BBB BB B bbbbbbbbbbbbbbb bbbbbbbbbbbbbbb bbbbbbbbbbbbbb ・ ・ こういった形式でテキストが入った大きいサイズのひとつのファイルを ・ファイル名 AA A AAA ・テキスト内 >AA A AAA aaaaaaaaaaaaaaa aaaaaaaaaaaa ・ファイル名 BBB BB B ・テキスト内 >BBB BB B bbbbbbbbbbbbbbb bbbbbbbbbbbbbbb bbbbbbbbbbbbbb となるように個別に出力させたいのですがどのようにすればよいでしょうか? #!/usr/bin/perl -w use strict; my $first; my $file; $first = 1; open(IN,"分割前ファイル"); foreach(<IN>) { if ( /^>(.*)/ ) { if ($first == 0 ) { close(OUT); } else {$first = 0; } $file = $1; $file =~ s/[\r\n]//; open(OUT,">$file"); } else { print OUT $1; print OUT $_; } } close(IN); このようなプログラムを組んだのですが、出力結果はファイル名についてはいいのですが、テキスト内が思ったようにいきません。 ・ファイル名 AA A AAA ・テキスト内 AA A AAAaaaaaaaaaaaaaaa AA A AAAaaaaaaaaaaaa このような結果になってしまいます。 どなたか対処方をわかるかたがいましたらお願いします。

    • ベストアンサー
    • Perl
  • エクセル2003のVBAを教えて

    エクセル2003のVBAを教えてください。 次の対象データで、(1)(2)(3)の作業が出来るエクセルVBAを教えて下さい。 (1)(2)(3)個々のVBAでお願いします。 ●対象データ:種類(A列)、文字(B列)、    データの行数:不特定なので、データのある最終行までとします。 ●教えていただきたい項目  (1):種類だけを(C列)に取り出す。  (2):種類の先頭に空白の行を3行入れて、追加の2行目の種類(A列)に文字(B列)を入れる。  (3):種類が5行以上あるときは、5行ごとに空白行を追加する。 ●対象データ 種類(A列)   文字(B列) AA       あああ BB       いいい BB       いい BB       いいい CC       うう CC       うう DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ ●(1)のVBAの結果(このようになるVBAを教えてください。) (C列) AA BB CC DD ●(2)、(3)のVBAの結果(このようになるVBAを教えてください。) 種類(A列)    文字(B列) あああ AA        あああ いいい BB        いいい BB        いいい BB        いいい うう CC        うう CC        うう ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ

  • Excel マクロ VBA セル内で改行された文字列の分割

    はじめまして。 ExcelのVBA初心者で、ちょっと困っています。 (例) (1) セルA1に以下のような改行された文字列が入力されています。 【セルA1】 a aa aaa b bb bbb (2) セルA1内の文字列を3行毎に分割し、セルA2以降に表示させたい。 【セルA2】 a aa aaa 【セルA3】 b bb bbb ※ 今回の例ではセルA1に6行しかありませんが、実際に行数は決まっていません。 そこで以下のようなVBAを見よう見まねで作り、1行毎の分割はうまくいったのですが、『3行毎に分割』ができません。 Sub 分割() Dim A, B, C A = Split(Range("A1"), Chr(10)) B = 0 For Each C In A B = B + 1 Range("A2").Offset(B - 1, 0).Value = C Next End Sub ご教授いただけると助かります。 よろしくお願い致します。

  • 差分のLZHファイルの作り方

    win2000のDOSコマンドから実行する方法を模索しています。 指定するディレクトリの中身全部を圧縮するとき、別の場所に作ってある「A.LZH」と比較して差分ファイルだけを「B.LZH」の名前で圧縮するという方法はありませんか? つまり、これから圧縮しようとするファイルに対し「A.LZH」の中に無い物だけを「B.LZH」として圧縮したいのです。 差分のバイナリファイルを作るフリーウェアが存在するようなのですが、どうしても差分のLZHを作りたいので。 通常はLHMeltを使っています。

専門家に質問してみよう