- ベストアンサー
Excelデータの並べ替えと比較方法について
- Excelデータの並べ替えや比較方法について知りたいです。
- 数百件のExcelデータを効率的に並べ替えて比較する方法を教えてください。
- A列とD列のコードを順番どおり並べ替え、E列やF列のデータも同時に並べ替える方法を知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#01です。ではマクロにしました 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はシートに戻り、ALT+F8でマクロ一覧を開き、マクロ名「Macro2」を選択して「実行」ボタンです Dim ws As Worksheet Dim ptrA, ptrD, idx As Long Dim wkA, wkD Sub Macro2() 'シートコピー&並び替え ActiveSheet.Copy After:=ActiveSheet Set ws = ActiveSheet idx = ws.Range("A65536").End(xlUp).Row Range(ws.Cells(1, "A"), ws.Cells(idx, "C")).Sort Key1:=Range("A2"), _ Order1:=xlAscending, Header:=xlGuess idx = ws.Range("D65536").End(xlUp).Row Range(ws.Cells(1, "D"), ws.Cells(idx, "F")).Sort Key1:=Range("D2"), _ Order1:=xlAscending, Header:=xlGuess '編集シート追加 Worksheets.Add After:=ActiveSheet ptrA = 2 ptrD = 2 idx = 2 ActiveSheet.Range("A1:F1").Value = ws.Range("A1:F1").Value Do Until ws.Cells(ptrA, "A").Value = "" And _ ws.Cells(ptrD, "D").Value = "" wkA = ws.Cells(ptrA, "A").Value wkD = ws.Cells(ptrD, "D").Value If wkA = wkD Then Call Macro2A Call Macro2D Else If wkD = "" Then Call Macro2A Else If wkA = "" Or wkA > wkD Then Call Macro2D Else Call Macro2A End If End If End If idx = idx + 1 Loop Application.DisplayAlerts = False ws.Delete Application.DisplayAlerts = True Set ws = Nothing End Sub Sub Macro2A() ActiveSheet.Cells(idx, "A").Resize(1, 3).Value = _ ws.Cells(ptrA, "A").Resize(1, 3).Value ptrA = ptrA + 1 End Sub Sub Macro2D() ActiveSheet.Cells(idx, "D").Resize(1, 3).Value = _ ws.Cells(ptrD, "D").Resize(1, 3).Value ptrD = ptrD + 1 End Sub 実行結果はこうなりました CD 社名 金額 CD 社名 金額 1010 ○○商事 321987 1010 ○○商事 321987 1020 ××商事 654321 1020 ××商事 654321 1030 △△商事 663591 1080 □□商事 963741 1080 □□商事 963741 2100 ★★商事 656982 2100 ★★商事 656982 3330 ◆◆商事 200100 3330 ◆◆商事 200100 4210 ※※商事 998825 5210 ◎◎商事 555000
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
マッチング処理ですね。 A B C D E F 1:CD 社名 金額 CD 社名 金額 2:1010 ○○商事 321,987 1010 ○○商事 321,987 3:1020 ××商事 654,321 1020 ××商事 654,321 4:1030 △△商事 663,591 5:1080 □□商事 963,741 1080 □□商事 963,741 6:2100 ★★商事 656,982 2100 ★★商事 656,982 7:3330 ◆◆商事 200,100 3330 ◆◆商事 200,100 8: 4210 ※※商事 998,825 のようにしたいということでしょうか、補足お願いします 1)A列のコードは昇順に並んでいるように見えますが、昇順に並んでいない場合は昇順に並び替えして良いですか? (それにより実現方法が変わってきます) 2)「A列になく、D列にあるデータ(4210)」は必ずA列の行より下に並ぶことになりますが、その解釈で正しいですか。 3)マッチングリストは別シートに作成しても良いですか? 4)マクロで実現してもよいですか(関数だと4210のようなデータは結構難しいかもしれません)
補足
1)昇順で結構です。 2)もしA列に5210のコードがある場合には、 7:3330 ◆◆商事 200,100 3330 ◆◆商事 200,100 8: 4210 ※※商事 998,825 9:5210 ◎◎商事 255,385 のように出来れば、問題ございません。 3)シートは、別でも構いません。 4)マクロでも構いません。 宜しくお願い致します。
お礼
無事に表示されるようになりました。 違うデータから引っ張ってきているので 照合するのに困っていました。 本当にありがとうございました。