AシートとBシートとのデータ相違書き出しについて(説明あり) | |
---|---|
[196395] AシートとBシートとのデータ相違書き出しについて(説明あり)- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/01/04(08:55)) □U R L/ 1.Aシート(今年) 行 A B C D E F G H I J K 1 地区 番号 名前 年月 他 金額1 金額2 金額3 金額4 金額5 ・・ 2 w 101 あ 202404 ・ 1 3 5 6 8 ・ 3 w 101 あ 202405 ・ 2 4 6 7 9 ・ 4 w 101 あ 202407 ・ 3 5 7 8 10 ・ 5 w 104 え 202405 ・ 2 4 6 7 9 ・ 6 w 108 た 202406 ・ 1 5 7 8 10 ・ 2.Bシート(去年) 行 A B C D E F G H I J K 1 地区 番号 名前 年月 他 金額1 金額2 金額3 金額4 金額5 ・・ 2 w 101 あ 202404 ・ 1 3 5 6 8 ・・ 3 w 101 あ 202405 ・ 2 4 6 7 9 ・・ 4 w 101 あ 202407 3 5 7 8 10 ・・ 5 w 107 き 202404 ・ 3 5 7 8 10 ・・ 6 w 108 た 202406 2 5 7 8 10 ・ 説明 *キー:番号+年月 A,Bとも2行目のキーと金額 A = B A,Bとも3行目のキーと金額 A = B A,Bとも4行目のキーと金額 A = B Aの5行目のキー A 有り B 無し Bの5行目のキー A 無し B 有り A,Bとも6行目のキーと金額 A <> B 金額がいずれか相違 3.C 差異(同じキーでの)シート出力結果 (AとBとの差異出力:Aに無く又はA・Bで金額変更ある場合) 行 A B C D E F G H I J 1 地区 番号 名前 年月 他 金額1 金額2 金額3 金額4 金額5 2 w 107 き 202404 ・ 3 5 7 8 10 3 空白行にする 4 w 108 き 202406 ・ 1 5 7 8 10 5 w 108 き 202406 ・ 2 5 7 8 10 説明 2行目 A 無し B 有り 4行目 A <> B キーが一致するも金額がいずれか相違 5行目 A <> B キーが一致するも金額がいずれか相違 4.Cシートへの書き出し事由 *AシートとBシートのキー(番号・年月)を比較して ・AシートとBシートのキーが一致して全ての金額も一致すればCシートには書き出さない ・Aシートのキーと同じキーがBシートに無ければCシートには書き出さない ・AシートにBシートと同じキーが無ければBシートの該当行内容をCシートには書き出す ( CシートにBシートの該当データをBシートの17列まで書き出す) ・AシートとBシートのキーが一致しても金額のいずれか相違していれば Aシート・Bシートの17列目まで書き出す *なお、書き出し結果は、 相違要因の結果毎に1行毎、 空白を設けてわかりやすいようにする *Aシート・Bシートとのキー順に並べ替え済みです どなたか上記のようなVBA(コーディング)について ご記載頂ければ幸いです よろしくお願いいたします WIN11です ++++++++++++++++++++ OS ⇒OTHER Version⇒Excel 2007 ++++++++++++++++++++ |
[196397] Re[1]: AシートとBシートとのデータ相違書き出しについて(説明あり)- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/01/04(15:42)) □U R L/ >(説明あり) 説明あり、とはどう言う意味なんですか? 普通、質問には説明があるのが相場なのですが。。 |
[196398] Re[2]: AシートとBシートとのデータ相違書き出しについて(説明あり)- ■記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/01/04(16:04)) □U R L/ 半平太さん、 ご質問ありがとうございます。 >(説明あり) >説明あり、とはどう言う意味なんですか? >普通、質問には説明があるのが相場なのですが。。 説明とは 上記文章にある 4.Cシートへの書き出し事由 の以下の事です ↓ *AシートとBシートのキー(番号・年月)を比較して ・AシートとBシートのキーが一致して全ての金額も一致すればCシートには書き出さない ・Aシートのキーと同じキーがBシートに無ければCシートには書き出さない ・AシートにBシートと同じキーが無ければBシートの該当行内容をCシートには書き出す ( CシートにBシートの該当データをBシートの17列まで書き出す) ・AシートとBシートのキーが一致しても金額のいずれか相違していれば Aシート・Bシートの17列目まで書き出す *なお、書き出し結果は、 相違要因の結果毎に1行毎、 空白を設けてわかりやすいようにする *Aシート・Bシートとのキー順に並べ替え済みです ↑ 以上お手数おかけしますが 御多忙中のところ、 よろしくお願いいたします。 |
[196399] Re[3]: AシートとBシートとのデータ相違書き出しについて(説明あり)- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/01/04(16:19)) □U R L/ > 説明とは > 上記文章にある > 4.Cシートへの書き出し事由 > の以下の事です・・ 通常の「仕様説明」であると理解しました。 ただ、現在、コードをアップしようとすると、 >Forbidden >The server refuse to browse the page.・・・ とか言われて拒否されるので(この現象は時々発生します。困ったものです) 回復したらアップする予定です。 |
[196400] Re[4]: AシートとBシートとのデータ相違書き出しについて(説明あり)- ■記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/01/04(17:52)) □U R L/ 大変お手数おかけいたします。よろしくお願いいたします。 |
[196401] Re[5]: AシートとBシートとのデータ相違書き出しについて(説明あり)- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/01/05(12:47)) □U R L/ まだ復旧しない様なので、全角でアップします。(後はそちらで対応してください。) Sub test() Dim Ws(1 To 3) As Worksheet Dim i As Long Dim r(1 To 2) As Range Dim aCell As Range Dim dicT(1 To 2) As Object Dim ky Dim Rw, adr(1 To 2) Set Ws(1) = Worksheets(”A”) Set Ws(2) = Worksheets(”B”) Set Ws(3) = Worksheets(”C”) Application.ScreenUpdating = False Ws(3).UsedRange.Offset(1).ClearContents ’事前クリア For i = 1 To 2 Set dicT(i) = CreateObject(”Scripting.Dictionary”) With Ws(i) Set r(i) = .Range(”B2”, .Cells(.Rows.Count, ”B”).End(xlUp)) For Each aCell In r(i) If aCell <> ”” Then dicT(i)(aCell & ”,” & aCell.Offset(0, 2)) = aCell.Row End If Next aCell End With Next i For Each ky In dicT(2) If dicT(1).exists(ky) = False Then Ws(2).Cells(dicT(2)(ky), ”A”).Resize(1, 17).Copy Ws(3).Cells(Rows.Count, ”A”).End(xlUp).Offset(2) End If Next ky For Each ky In dicT(1) If dicT(2).exists(ky) Then Rw = dicT(1)(ky) adr(1) = Ws(1).Name & ”!” & Cells(Rw, ”F”).Resize(1, 12).Address adr(2) = Ws(2).Name & ”!” & Cells(dicT(2)(ky), ”F”).Resize(1, 12).Address If Worksheets(”C”).Evaluate(”AND(” & adr(1) & ”=” & adr(2) & ”)”) = False Then Ws(1).Cells(dicT(1)(ky), ”A”).Resize(1, 17).Copy Ws(3).Cells(Rows.Count, ”A”).End(xlUp).Offset(2) Ws(2).Cells(dicT(2)(ky), ”A”).Resize(1, 17).Copy Ws(3).Cells(Rows.Count, ”A”).End(xlUp).Offset(1) End If End If Next ky Ws(3).Rows(2).Delete ’不要行を削除 Application.ScreenUpdating = True dicT(1).RemoveAll dicT(2).RemoveAll End Sub |
[196402] Re[6]: AシートとBシートとのデータ相違書き出しについて(説明あり)- ■記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/01/05(20:31)) □U R L/ 半平太さん 早速にありがとうございます すぐにテストして見ます また、結果をお知らせします。 よろしくお願いいたします。 |
[196403] Re[7]: AシートとBシートとのデータ相違書き出しについて(説明あり)- ■ / 記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/01/05(20:50)) □U R L/ 半平太さん 早速確認しました 上手く動作しました。 優秀なコードを大変ありがとうございました。 御多忙中お手数おかけしました 今後ともよろしくお願いいたします お世話になりました。 |
このトピックに書きこむ |
---|