※Excel2007を使っています。
※A、B、C、D、E列は既に昇順に並んでいます。
※レコードは100万行近くあり、並べ替え後の必要なカラム数は最大で505(SK列)までで収まります。
※内容がわかりにくいようでしたらコメントにご質問ください。
どうぞよろしくお願い致します。
Sub test() y = 6 'セットするセル i = 2 '検索する行 Do Until Cells(i, 1) = "" '空白行になるまで繰り返し 'i行とその上の行のキーセルが同じならば If Cells(i, 1) = Cells(i - 1, 1) And Cells(i, 2) = Cells(i - 1, 2) And Cells(i, 3) = Cells(i - 1, 3) And Cells(i, 4) = Cells(i - 1, 4) Then Cells(i - 1, y) = Cells(i, 5) 'セットセルにE列の値をセット Range(i & ":" & i).Delete '検索し終えた行を削除 y = y + 1 'セットセルを1列右にずらす Else 'もし検索行がひとつ上のキーと違うならば i = i + 1 '検索行を1行下にずらす y = 6 'セット列を初期に戻す End If Loop End Sub
いちおう、A,B,C,D列がすでにソートされているのが前提です。
別シートに結果を出しても良かったのですが、とりあえず元データを加工する形になっています。
(行削除されていきます)
少しファイルサイズを落としてみて再チャレンジしてみますね!
2012/03/04 18:50:51画面の描画を止めて処理すると多少は変わるかもしれません。
2012/03/04 20:40:24Sub test()の下に
Application.ScreenUpdating = False
あとEnd Subの上に
Application.ScreenUpdating = True
を入れてみてください。