今更だけどChatgptマジでやばいな。これコーディングだけやってる様な人の仕事マジでなくなるぞその内。
下記のコミュニケーション(らしきもの)が成立して、しかも成果物のコードがそれなりに動いてやがる。。。
以下実際の履歴。。。
問:
Excelで作成されている二つの表があります。それぞれの表は1行目がタイトル行になっており、カラム名は共通ですが、並び順はバラバラです。さらに各行のデータもほとんど同じですが、並び順はバラバラです。この二つの表のデータ差分を抽出する方法を教えてください。
回答:
Excelで二つの表のデータ差分を抽出するには、以下の手順を実行してください。
1. まず、差分を抽出したい二つの表を開きます。
2. 差分を抽出したいカラムを選択し、両方の表で同じ順序に並べます。
3. 差分を抽出するための空の表を作成し、共通のカラム名を1行目に記入します。
4. 1つ目の表の2行目以降を、2つ目の表の2行目以降と比較します。
5. 同じ行があった場合は何もしませんが、1つ目の表にしかない行があった場合は、その行を空の表に追加します。
6. 2つ目の表にしかない行があった場合は、その行を空の表に追加します。ただし、この場合は1つ目の表にないカラムには値が入らないように注意してください。
7. 1つ目の表と2つ目の表のすべての行を比較したら、空の表に残った行が、差分となります。
この方法では、カラム名が同じであること、そしてカラムの並び順が異なっていることを考慮しています。ただし、この方法では行数が多い場合に手間がかかるため、VLOOKUP関数やマクロなどを使って自動化する方法もあります。
その手順をVBAで自動化してください
回答:
以下は、2つの表のデータ差分をVBAで自動化するサンプルコードです。このコードは、1つ目の表のデータを基準に、2つ目の表のデータを比較し、差分を抽出するものです。このコードは、2つの表が別々のワークシートにある場合に使用できます。
Sub Extract_Differences()Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As WorksheetDim rng1 As Range, rng2 As Range, rng3 As RangeDim LastRow1 As Long, LastRow2 As LongDim i As Long, j As LongDim Found As Boolean'1つ目の表を基準にするSet ws1 = Worksheets("Table1")Set ws2 = Worksheets("Table2")Set ws3 = Worksheets("Differences")'1つ目の表のデータがある範囲を選択LastRow1 = ws1.Cells(Rows.Count, 1).End(xlUp).RowSet rng1 = ws1.Range("A2:F" & LastRow1)'2つ目の表のデータがある範囲を選択LastRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).RowSet rng2 = ws2.Range("A2:F" & LastRow2)'結果を出力する範囲を選択Set rng3 = ws3.Range("A2:F2")'ヘッダーをコピーrng3.Value = rng1.Value'1つ目の表の各行について、2つ目の表に存在するかどうか検索For i = 1 To rng1.Rows.CountFound = FalseFor j = 1 To rng2.Rows.CountIf rng1.Cells(i, 1).Value = rng2.Cells(j, 1).Value ThenFound = TrueExit ForEnd IfNext j'2つ目の表に存在しない場合、結果に追加If Not Found ThenSet rng3 = ws3.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)rng3.Value = rng1.Cells(i, 1).Resize(1, 6).ValueEnd IfNext i'終了メッセージを表示MsgBox "データの比較が完了しました。", vbInformationEnd Subこのコードを実行する前に、以下の点に注意してください。
1つ目の表は、"Table1"というワークシートにあることを前提としています。2つ目の表は、"Table2"というワークシートにあることを前提としています。
結果は、"Differences"というワークシートに出力されます。このワークシートはあらかじめ作成しておく必要があります
結果、条件を満たすExcelファイルと2つの表を行列とも順序ばらけさしてテストしたらTable1にあって、Table2にない行のデータをちゃんとDifferencesシートに出力しおった。
恐るべしだわ。まぁ何度かやり直したり、微調整が必要だったりもあるし当面は人のチェックが外せないけど、とんでもない事には間違えない。
つか生産性もヤバい。調べながら作ったら半日くらいかかると思うけど、10分くらいで動いた。
これはちょっとマジで社会が変わるインパクトがある予感。
0 件のコメント:
コメントを投稿