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行に 書き換えれば、良いのではないでしょうか? |
このトピックに書きこむ |
---|