戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
2つのファイルの差分抽出

    [195073] 2つのファイルの差分抽出-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ なつこ -(2022/07/29(23:44))
    □U R L/

      こんにちは。
      色んなサイトを調べてもうまくいかずコードを教えていただきたいです。


      ・比較1.xlsx
      ・比較2.xlsx

      のファイルが同じフォルダにはいっています。それぞれのシートには2列10行記載があり1列目に商品コード1〜10,2列目には商品単価が記載しています。
      商品単価を比較し差分のあった商品コードをテキストファイルで出力をする

      ということを行いたいのですがどのようなコードを書いたらよいでしょうか
      どなたかコードをご教示いただけないでしょうか?宜しくお願いします。
      どなたかご教授願いたいです。よろしくお願いします。




    [195074] (削除)-

    記事引用/メール受信=OFF■

    □投稿者/ / -(2022/07/30(08:53))
    □U R L/

      この記事は削除されました




    [195076] Re[2]: 2つのファイルの差分抽出-

    記事引用/メール受信=OFF■

    □投稿者/ gyokusen -(2022/07/31(21:20))
    □U R L/
      まず手作業で実施する場合の作業内容を記述します。
      1.比較1.xlsxファイルをオープンする
      2.比較2.xlsxファイルをオープンする
      3.比較1.xlsxの左端にあるシートのA1セルの商品コードを見る
      4.比較2.xlsxの左端にあるシートのA1セルの商品コードを見る
      5.商品コードが同じ場合は、両方のB1セルの商品単価を見る
      6.単価が違っていたらその商品コードをメモ帳に書き出す
      7.以降は比較1側のA2セルの商品コードを見て、比較2側にないか調べる作業を繰り返し、単価が違っていたらメモ帳に書き出すことを繰り返す。
      
      次に、それぞれのアクションをどう記述すればよいかグーグル検索で「vba ファイルオープン」で調べる。
      
      ・マクロブックを対象ブックと同じフォルダに配置した前提で記述する。
      dim BP1 as string,BP2 as string
      BP1 = thisworkbook.path & "\比較1.xlsx"
      BP2 = thisworkbook.path & "\比較2.xlsx"
      
      Dim WB1 As Workbook
      Set WB1 = Workbooks.Open(Filename:=BP1)
      Dim WB2 As Workbook
      Set WB2 = Workbooks.Open(Filename:=BP2)
      
      一番左端にあるシートはどう表現するのかについてもグーグル検索で「vba シート指定」
      
      Dim WS1 As Worksheet
      Set WS1 = WB1.sheets(1) 
      Dim WS2 As Worksheet
      Set WS2 = WB2.sheets(1) 
      
      比較1のシートのA1~A10のセルをチェックするコード
      比較2のシートのA1~A10のセルをチェックするコード
      dim i as long, j as long,k as long
      redim 商品コード(1 to 10,1 to 3)
      k = 1
      
      for i = 1 to 10
      
       for j = 1 to 10
           if WS1.cells(i,1) = WS2.cells(j,1) then
              if WS1.cells(i,2) = WS2.cells(j,2) then
              else
                 商品コード(k,1) = WS1.cells(i,1) 
                 商品コード(k,2) = WS1.cells(i,2) 
                 商品コード(k,3) = WS2.cells(i,2) 
              end if
        next
      
      next
      
      最後に配列商品コードの中身を調べて商品コードが違っているコードが
      登録されていたら、テキストファイルに書き出す。
      「vba ファイル書き出し」で参考になるコードを探す
      
      Dim datFile As String
      datFile = ActiveWorkbook.Path & "\data.txt"
      
      Open datFile For Output As #1
      
      Dim iRow As Long
      iRow = 1
      Do While 商品コード(iRow,1) <> ""
          Print #1, 商品コード(iRow,1) & " " & 商品コード(iRow,2) & " " & 商品コード(iRow,2)
          iRow = iRow + 1
      Loop
      
      Close #1
      
      MsgBox "data.txtに書き出しました"
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195077] Re[3]: 2つのファイルの差分抽出-

    記事引用/メール受信=OFF■

    □投稿者/ gyokusen -(2022/07/31(21:44))
    □U R L/
      <前回のコードにend if が漏れてましたので再度投稿します>
      
      まず手作業で実施する場合の作業内容を記述します。
      1.比較1.xlsxファイルをオープンする
      2.比較2.xlsxファイルをオープンする
      3.比較1.xlsxの左端にあるシートのA1セルの商品コードを見る
      4.比較2.xlsxの左端にあるシートのA1セルの商品コードを見る
      5.商品コードが同じ場合は、両方のB1セルの商品単価を見る
      6.単価が違っていたらその商品コードをメモ帳に書き出す
      7.以降は比較1側のA2セルの商品コードを見て、比較2側にないか調べる作業を繰り返し、単価が違っていたらメモ帳に書き出すことを繰り返す。
      
      次に、それぞれのアクションをどう記述すればよいかグーグル検索で「vba ファイルオープン」で調べる。
      
      ・マクロブックを対象ブックと同じフォルダに配置した前提で記述する。
      dim BP1 as string,BP2 as string
      BP1 = thisworkbook.path & "\比較1.xlsx"
      BP2 = thisworkbook.path & "\比較2.xlsx"
      
      Dim WB1 As Workbook
      Set WB1 = Workbooks.Open(Filename:=BP1)
      Dim WB2 As Workbook
      Set WB2 = Workbooks.Open(Filename:=BP2)
      
      一番左端にあるシートはどう表現するのかについてもグーグル検索で「vba シート指定」
      
      Dim WS1 As Worksheet
      Set WS1 = WB1.sheets(1) 
      Dim WS2 As Worksheet
      Set WS2 = WB2.sheets(1) 
      
      比較1のシートのA1~A10のセルをチェックするコード
      比較2のシートのA1~A10のセルをチェックするコード
      dim i as long, j as long,k as long
      redim 商品コード(1 to 10,1 to 3)
      k = 1
      
      for i = 1 to 10
      
       for j = 1 to 10
           if WS1.cells(i,1) = WS2.cells(j,1) then
              if WS1.cells(i,2) = WS2.cells(j,2) then
              else
                 商品コード(k,1) = WS1.cells(i,1) 
                 商品コード(k,2) = WS1.cells(i,2) 
                 商品コード(k,3) = WS2.cells(i,2) 
              end if
           end if
        next
      
      next
      
      最後に配列商品コードの中身を調べて商品コードが違っているコードが
      登録されていたら、テキストファイルに書き出す。
      「vba ファイル書き出し」で参考になるコードを探す
      
      Dim datFile As String
      datFile = ActiveWorkbook.Path & "\data.txt"
      
      Open datFile For Output As #1
      
      Dim iRow As Long
      iRow = 1
      Do While 商品コード(iRow,1) <> ""
          Print #1, 商品コード(iRow,1) & " " & 商品コード(iRow,2) & " " & 商品コード(iRow,2)
          iRow = iRow + 1
      Loop
      
      Close #1
      
      MsgBox "data.txtに書き出しました"


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195078] Re[4]: 2つのファイルの差分抽出-

    記事引用/メール受信=OFF■

    □投稿者/ gyokusen -(2022/07/31(21:57))
    □U R L/
      <説明が分かりにくい表現個所があったので再度投稿します>
      前の2つの投稿の削除方法が分かりませんでした。
      
      まず手作業で実施する場合の作業内容を記述します。
      1.比較1.xlsxファイルをオープンする
      2.比較2.xlsxファイルをオープンする
      3.比較1.xlsxの左端にあるシートのA1セルの商品コードを見る
      4.比較2.xlsxの左端にあるシートのA1セルの商品コードを見る
      5.商品コードが同じ場合は、両方のB1セルの商品単価を見る
      6.単価が違っていたらその商品コードをメモ帳に書き出す
      7.以降は比較1側のA2セルの商品コードを見て、比較2側にないか調べる作業を繰り返し、単価が違っていたらメモ帳に書き出すことを繰り返す。
      
      次に、それぞれのアクションをどう記述すればよいかグーグル検索で「vba ファイルオープン」で調べる。
      
      ・マクロブックを対象ブックと同じフォルダに配置した前提で記述する。
      dim BP1 as string,BP2 as string
      BP1 = thisworkbook.path & "\比較1.xlsx"
      BP2 = thisworkbook.path & "\比較2.xlsx"
      
      Dim WB1 As Workbook
      Set WB1 = Workbooks.Open(Filename:=BP1)
      Dim WB2 As Workbook
      Set WB2 = Workbooks.Open(Filename:=BP2)
      
      一番左端にあるシートはどう表現するのかについてもグーグル検索で「vba シート指定」
      
      Dim WS1 As Worksheet
      Set WS1 = WB1.sheets(1) 
      Dim WS2 As Worksheet
      Set WS2 = WB2.sheets(1) 
      
      比較1のシートのA1~A10のセルをチェックするコード
      比較2のシートのA1~A10のセルをチェックするコード
      dim i as long, j as long,k as long
      redim 商品コード(1 to 10,1 to 3)
      k = 1
      
      for i = 1 to 10
      
       for j = 1 to 10
           if WS1.cells(i,1) = WS2.cells(j,1) then
              if WS1.cells(i,2) = WS2.cells(j,2) then
              else
                 商品コード(k,1) = WS1.cells(i,1) 
                 商品コード(k,2) = WS1.cells(i,2) 
                 商品コード(k,3) = WS2.cells(i,2) 
              end if
           end if
        next
      
      next
      
      最後に配列商品コードの中身を調べて商品コードが
      登録されていたら、テキストファイルに書き出す。
      「vba ファイル書き出し」で参考になるコードを探す
      
      Dim datFile As String
      datFile = ActiveWorkbook.Path & "\data.txt"
      
      Open datFile For Output As #1
      
      Dim iRow As Long
      iRow = 1
      Do While 商品コード(iRow,1) <> ""
          Print #1, 商品コード(iRow,1) & " " & 商品コード(iRow,2) & " " & 商品コード(iRow,2)
          iRow = iRow + 1
      Loop
      
      Close #1
      
      MsgBox "data.txtに書き出しました"
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195079] Re[5]: 2つのファイルの差分抽出-

    記事引用/メール受信=OFF■

    □投稿者/ せいや -(2022/08/06(20:42))
    □U R L/

      商品コード(k,3) = WS2.cells(i,2)
      の1行を
      商品コード(k,3) = WS2.cells(j,2) 'iではなくj
      k = k + 1'
      の2行に
      書き換えれば、良いのではないでしょうか?



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G