質問: エクセルで表の相違確認をvbaでしたい。 お世話になっております。 下記の様な表がシート1とシート2に有、 シート2がシート1と比較して、行が多かったり、または 数量だけが変わっていたり、行が減っていたり、 表の行数は100から200行くらいあるので、vbaでどこが 違うかをすぐ分かる様に確認したいと思っています。 下記の表はあくまでも例ですが、実際は同じno・同じ品番・同じ品名・同じ数量で複数行あったりします。 どの様に記述していいか分からなく、ご教示下さいます様宜しくお願い致します。 記 a列 b列 c列 d列 e列 no 品番 品名 地区 数量 236 a6tet みかん 市川 3本 248 a7tgr りんご 松戸 5本 273 b9gkt ぶどう 柏 14本 273 a8ufe すいか 行徳 6本 381 c2rof いちご 平井 22本
回答: どういう条件の行があって、何をもってその行が「同じ/違う」とするか?という仕様によると思いますが、 仮に、abcd列が全て同じものを「同一」とし、同シートに前述定義の「同一」が無いと仮定すれば、 set s1 = sheets("sheet1").range("a1").currentregion set s2 = sheets("sheet2").range("a1").currentregion n = 10 for i = 2 to s1.rows.count s1.cells(i, 6) = "" next for j = 2 to s2.rows.count s2.cells(j, 6) = "" next for i = 2 to s1.rows.count judge = 0 for j = 2 to s2.rows.count if s1.cells(i, 1) = s2.cells(j, 1) and _ s1.cells(i, 2) = s2.cells(j, 2) and _ s1.cells(i, 3) = s2.cells(j, 3) and _ s1.cells(i, 4) = s2.cells(j, 4) then judge = 1 if s1.cells(i, 5) = s2.cells(j, 5) then s2.cells(j, 6) = "sheet1と同じ" '同一 else s2.cells(j, 6) = "sheet1と本数以外同じ" '本数変更 end if end if next if judge = 0 then s1.cells(i, 6) = "sheet1にしかない" '削除 end if next for j = 2 to s2.rows.count if s2.cells(j, 6) = "" then s2.cells(j, 6) = "sheet2にしかない" '追加 end if next 順次比較でスマートではありませんが