• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:並べ替え?抽出?)

Excelデータの並べ替えと比較方法について

このQ&Aのポイント
  • Excelデータの並べ替えや比較方法について知りたいです。
  • 数百件のExcelデータを効率的に並べ替えて比較する方法を教えてください。
  • A列とD列のコードを順番どおり並べ替え、E列やF列のデータも同時に並べ替える方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.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

cyocyocyo
質問者

お礼

無事に表示されるようになりました。 違うデータから引っ張ってきているので 照合するのに困っていました。 本当にありがとうございました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

マッチング処理ですね。  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のようなデータは結構難しいかもしれません)

cyocyocyo
質問者

補足

1)昇順で結構です。 2)もしA列に5210のコードがある場合には、 7:3330 ◆◆商事 200,100 3330 ◆◆商事 200,100  8:                 4210 ※※商事 998,825 9:5210 ◎◎商事 255,385 のように出来れば、問題ございません。 3)シートは、別でも構いません。 4)マクロでも構いません。 宜しくお願い致します。

関連するQ&A

専門家に質問してみよう