• ベストアンサー

エクセルのファイル内データ比較

nishi6の回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

前の回答と同様の前提です。 横に50余りのBook、縦に250余りのBookのSheet1のセル内容を取り込みます。AB列それぞれで比較しています。 各シートの差の絶対値を計算・表示し、シート単位のA・B列の絶対値計を計算し、ゼロでなければ青く色が付きます。 実際、300余りのBookでどの位時間がかかるか不明です。300Bookを一括処理が可能かも不明です。 基本3Book、比較対象6Bookで数秒です。(こちらはPentium120、32MB (;o;)とかなり遅い! ) 数Bookでテストして見て下さい。けっこうおもしろい問題でした。 標準モジュールに貼り付けます。 Public Sub SheetsHikakuCell()  Dim MainFolder As String, MainExcel As String, MainBookNum As Integer ' 50シートのフォルダ,ファイル名,数  Dim Sub_Folder As String, Sub_Excel As String, Sub_BookNum As Integer '250シートのフォルダ,ファイル名,数 '  Dim myBookName As String '集計用ブック名   myBookName = ThisWorkbook.Name  Dim sht1 As Worksheet '集計用シート  Dim rg As Range '集計用シートのA1  Set sht1 = Worksheets("Sheet1")  Set rg = sht1.Range("A1")  MainFolder = "C:\benkyo\Main" '<=== 変更して下さい  Sub_Folder = "C:\benkyo\Sub" '<=== 変更して下さい  Application.ScreenUpdating = False  ' 50シートの方を読む。  MainExcel = Dir(MainFolder & "\" & "*.xls")  While MainExcel <> ""   Workbooks.Open MainFolder & "\" & MainExcel    MainBookNum = MainBookNum + 1    Workbooks(myBookName).Activate     With Worksheets("Sheet1").Range("A1")      .Offset(0, MainBookNum * 4) = MainExcel      Workbooks(MainExcel).Worksheets("Sheet1").Range("A1:B90").Copy _        Destination:=.Offset(0, MainBookNum * 4 + 1)     End With     Workbooks(MainExcel).Close   MainExcel = Dir  Wend  '250シートの方を読む。  Sub_Excel = Dir(Sub_Folder & "\" & "*.xls")  While Sub_Excel <> ""   Workbooks.Open Sub_Folder & "\" & Sub_Excel    Sub_BookNum = Sub_BookNum + 1    Workbooks(myBookName).Activate     With Worksheets("Sheet1").Range("A1")      .Offset(Sub_BookNum * 100, 0) = Sub_Excel      Workbooks(Sub_Excel).Worksheets("Sheet1").Range("A1:B90").Copy _        Destination:=.Offset(Sub_BookNum * 100, 1)     End With     Workbooks(Sub_Excel).Saved = True     Workbooks(Sub_Excel).Close   Sub_Excel = Dir  Wend  Dim rwCot As Integer  With Worksheets("Sheet1").Range("A1")   'ファイル名のコピー   .Offset(100, 4).Formula = "=E1"   'A列の差額計算式   For rwCot = 1 To 90    .Offset(99 + rwCot, 5).Formula = "=Abs(F$" & rwCot & "-$B" & (100 + rwCot) & ")"   Next   'B列の差額計算式   For rwCot = 1 To 90    .Offset(99 + rwCot, 6).Formula = "=Abs(G$" & rwCot & "-$C" & (100 + rwCot) & ")"   Next   'A列差の絶対値計   .Offset(102, 4) = "A列差の絶対値計"   .Offset(103, 4).Formula = "=Sum(F101:F190)"   .Offset(103, 4).FormatConditions.Delete '条件付き書式を設定   .Offset(103, 4).FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="0"   .Offset(103, 4).FormatConditions(1).Interior.ColorIndex = 8   'B列差の絶対値計   .Offset(105, 4) = "B列差の絶対値計"   .Offset(106, 4).Formula = "=Sum(G101:G190)"   .Offset(106, 4).FormatConditions.Delete '条件付き書式を設定   .Offset(106, 4).FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="0"   .Offset(106, 4).FormatConditions(1).Interior.ColorIndex = 8  End With  '差額の式をコピー  Dim mn, sb As Integer 'Bookカウンタ  Range("E101:G190").Copy  For mn = 1 To MainBookNum   For sb = 1 To Sub_BookNum    Range("E101").Offset((sb - 1) * 100, (mn - 1) * 4).Select    ActiveSheet.Paste   Next  Next  Application.ScreenUpdating = True End Sub

eijikun
質問者

お礼

ありがとうございます. プログラムも書いて頂き 大変恐縮です. うまく行きそうです.

関連するQ&A

  • エクセルでの列と列の比較、重複データ個数抽出

    すいません。どなたか教えてください。 今、エクセル2003を使用しているのですが、ある条件でデータの個数が抽出出来ません。 お知恵をお貸しください。   A列 B列 1 あ   あ 2 い   う 3 う    い 4 え    5 お   か A列とB列を比べると、「あ、い、う」の3つのデータが重複しています。 そこで、一つのセルで3個とい値を返したいです。 条件として、 ・計算用のシートや別セルを使わずに、例えば、C1などの1つのセルの中で関数を使用して個数を出したいです。 ・できたらマクロも使用しないでやりたいです。 ・数字ではなく、文字列の比較で、空白行もあります。 やはり、列同士の比較は一つのセルの中でやることは不可能なのでしょうか? どなたかよろしくお願いいたします。

  • メインのデータと比較してないものを抽出(エクセル)

    電話番号データの比較を行っています。 現在は手作業なので、エクセルで一括でできないかと 思い、質問させていただきます。 メインデータ(A)と 比較データ(B)があります。 これらを照らし合わせて メインデータ(A)に存在して、比較データ(B)に 存在しない数字を抜き出す、か、 もしくは隣接するセルに存在しないなら「1」… といった判定をするにはどのようにすれば よいでしょうか? メインデータには比較データの数字が必ず存在。 比較データに存在してメインデータに存在することはない。 お知恵をお貸しください

  • 二つのファイルデータを比較し一致したものを並べる。

    こんにちは。VB初心者です。二つ別のファイル(A とB)のデータを比較して、その中で一致したものを並べたいのですが、とっかかりがつかめません。 例えばですが、商店名から下のデータ(一つのエクセルファイルAのシート1)に一致するものを、 EXCEL FILE A Sheet1 担当者  価格    地域  在庫 商品名 商店名 Bさん           埼玉     卵    佐藤屋 Cさん    250円    神奈川 有り 牛乳    高橋屋 もう一つのエクセルのファイル (下のデータ、エクセルファイルBシート1)の中から探して、商店名から比較したデータの結果をもう一つのシートに書き込みたいのですが、どうしたら情報を行ごとにマッチングできるのかわかりません(行ごとに情報が違うので)。。簡単にVLOOKUPでデータを拾うのではなく、マクロで比較したいのですが、よろしくお願いします。 EXCEL FILE B Sheet1 商店名 商品名 価格    地域  担当者 在庫 山田屋 みかん 100円 東京  Aさん 有り 佐藤屋 卵    200円  埼玉  Bさん 有り 高橋屋 牛乳    250円 神奈川 Cさん 有り あと、情報をマッチングの後、情報が抜けているところ(佐藤屋の価格、在庫)を色(赤)に塗ることができますか?こちらのほうもよろしくお願いします。

  • エクセルマクロでデータの比較

    色々調べてみたのですが、いまいち自分の思ってる感じにぴったりなものがないので、質問させてください。 【やりたい事】 同じフォルダまたはその直下のフォルダに それぞれエクセルファイルが1つずつあり、 フォーマットは違うが意味的には同じデータが入っています。 (『フォルダA』に『エクセルファイル(Ae.xls)』と『フォルダB』があり、『フォルダB』の中に『エクセルファイル(Be.xls)』がある状況です。) この2つの対応する項目同士を比較して、差異があった場合メッセージを出力する 他のエクセルファイルの値を取得する方法を教えてください。 他のファイルを開いている状態であれば値を取得するのは可能なのですが、 閉じている場合それができません。 インデックスが範囲外です と出てしまいます。 どなたか知恵をおかしください。

  • Excelでの比較、データチェックを行うには?

    Excel2000を使用しています。 全て数字で No、数量、金額、コード・・・・ といった感じにデータを入力しており、 量が多いので、同じものをもう一回入力して 比較し、違っている部分に色をつけることはできないか 調べています。入力自体はマクロを使ったファイルにて 入力しており、CSVで保存してあります。比較はExcelにて そのcsvのファイルをシート1、シート2にそれぞれ開いて 行おうとしています。 違っている部分に色をつけることはできそうなのですが その部分だけでなく、その行の一番左にあるNoにも色を つけたいと思うのですが、そのようなことは可能でしょうか?また、もっとよい方法があればどなたか教えてください。

  • 別々のEXCELファイルを比較し、片方だけにある情報をもう片方に書き込

    別々のEXCELファイルを比較し、片方だけにある情報をもう片方に書き込むやり方。 別々のEXCELファイルを比較し、片方にある情報を元に、もう片方のEXCELに表示するやり方を探しています。 Aファイル 営業担当者 お店の名前を管理する数字 お店の名前 電話番号 Bファイル お店の名前 お店の名前を管理する数字 Bのファイルに、お店の名前(お店の名前を管理する数字)が一致するAのファイルの営業担当者の情報を表示したいのですが、いい方法はあるでしょうか? よろしくおねがいします。

  • Excelでデータの比較をしたい

    類似した2つのデータを比較し、相違箇所だけ発見したいと 思っています。 (元のテーブル)  A  1  2 (取り込み後テーブル)  B  1  2 上の場合は、1、2は取り込まれているものの、値AがBに なってしまっているため、そこだけセルの色が変わるとか そういったことが出来ないかと考えています。 このようなことをExcelで行う方法を教えていただけ ないでしょうか? よろしくお願いします。

  • エクセルのファイル操作について

    マクロが組み込まれていないエクセルファイル「ファイルA」 マクロが組み込まれているエクセルファイル「ファイルB」 があったとします。 ファイルAを開いたとき、ファイルBのマクロをファイルAに 自動的にとりこむ方法ってありますか?

  • excelからwordのファイル名を検索してリンクを貼りたいのです。

    excelからwordのファイル名を検索してリンクを貼りたいのです。 1つのexcelファイルの中に数千行のデータが入っています。 そこから、excel1行に対して1つずつ、wordのファイル名にリンクを貼りたいのですが、 excelのデータとwordのファイル名で共通しているのは、excelにあるデータ(ABCDE)に対して、wordのファイル名は(CDEFG)と、全部が共通しているのではなく、3つだけ共通の文字列があるだけです。 (※各A,B,C,D,E,F,Gは文字列。A=日付、B=名前 など。)       関数でできるのか、マクロを組まなきゃいけないのか、それすらもわかりません。 こんな説明でわかりますか? マクロはほとんど初心者なので、詳しく教えて頂けると助かります。

  • エクセルファイルの一括変換・処理方法について

    エクセルファイルの一括変換・処理方法についてお聞きしたいことがあります。100行3列の数値データを持つエクセルファイルがあるとします。4列目に計算式例えば、D1=A1*B1をD列にフィルする作業を自動的に行い、かつ複数の、同様なデータを持つエクセルファイルにも一括して同一作業を行う方法を、どなたかご教授くださいませんでしょうか?おそらくマクロを使うこととなるかもしれませんが、もしそうでしたらそのマクロについてもお教えいただけるとありがたいです。よろしくお願いいたします