• 締切済み

Excelのデータの並べ替えについて

Excelのデータの並べ替えは(データ→並べ替え)で出来ますよね。 ところが一枚のシートにデータが入りきれず、複数のシートになった場合、 どのようにデータの並べ替えを摺るのでしょうか教えてください。 宜しく、お願いいたします。

みんなの回答

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.4

ピポットを使ってデータの参照時に複数のワークシートを指定してみるというのはどうでしょうか。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

もしどなたからも(VBAを使わない)エクセルだけでの解答が出なければご参考にしてください。 sheet1のA列のデータ数+SHEET2のデータ数が6万数千の エクセルの許容行数を越えていると言うことでしょうか。 それだと下記はだめですが、SHEET1のデータ数+SHEET2 のデータ数<エクセルの許容行数と仮定して述べます。 大型コンピュターのバッチ・プログラムでよく使ったマージの ロジックです。ソート結果をSHEET1のB列にセットしています。 SHEET1のA列とSHEET2のA列はエクセルのソートをして後 最終行の下のセルにowariといれ、下記を実行してください。 6万数千のエクセルの許容行数を越えているときは、下記の CELLS(I、2)の3箇所のところをディスクファイルに書き出だせば、 目的は達せられます。 Sub sort1() x = 1 ’sheet1のスタートは第1行から y = 1 ’sheet2のスタートは第1行から i = 1 ’sheet1のソート後のデータのセットは第1行から '------------ p1: If Worksheets("Sheet1").Cells(x, 1) ="owari” Then 'cells(x,1) はSHEET1のA列x行を表す Worksheets("Sheet1").Cells(x, 1) = 99999999 End If If Worksheets("Sheet2").Cells(y, 1) ="owari" Then 'cells(y,1) はSHEET2のA列y行を表す Worksheets("Sheet2").Cells(y, 1) = 99999999 End If '---------等しい時 If Worksheets("Sheet1").Cells(x, 1) = Worksheets("Sheet2").Cells(y, 1) Then If Worksheets("Sheet1").Cells(x, 1) = 99999999 Then GoTo owari Worksheets("Sheet1").Cells(i, 2) = Worksheets("Sheet1").Cells(x, 1) 'cells(i,2) はSHEET1のB列 i 行を表す i = i + 1 '直下の行にセットする x = x + 1 '直下の行を見る Else '--------SHEET1が小 If Worksheets("Sheet1").Cells(x, 1) < Worksheets("Sheet2").Cells(y, 1) Then Worksheets("Sheet1").Cells(i, 2) = Worksheets("Sheet1").Cells(x, 1) i = i + 1 x = x + 1 Else '--------SHEET2が小 Worksheets("Sheet1").Cells(i, 2) = Worksheets("Sheet2").Cells(y, 1) i = i + 1 y = y + 1 End If End If GoTo p1 owari: End Sub

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

Excelだけで行うとすると、 (1)元の複数のシートをシート単位にソートしてしまいます。 (2)データ量と、どのようなデータか分かりませんが、例えばソートキーが1万未満、1万番台、2万番台・・・    という感じで元のシートから別シートに集めて、そのシートを再度ソートしたらどうでしょうか。 10万件程度なら必要なシートは2枚で、2分割する位置を決めれば1回この操作を行えば可能だと思いますが・・・

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ACCESSを利用して、並べ替えたデータをシートにするのが 簡単と思います。