OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

EXCELのソート(並び替え)について

  • 困ってます
  • 質問No.115262
  • 閲覧数143
  • ありがとう数1
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 20% (31/154)

   A列   B    C    A    B    C
1行  2 4 5 1  1 2 3

2 1 3 3 ===> 2 1 2 4

3 2 1 2 3 2 3 5

の様に並べたい
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

複数列に折り返して並べると解釈して下記のマクロを書いて見ました。参考にして下さい。
シート1の任意行数、任意列数のデータをシート2に必要行数で折り返してソートします。
前提として、シート1、シート2のシート名はSheet1、Sheet2で、シート2はクリアして、そこに結果を書き込みます。
シート1のデータを全てソート対象にします。不要なデータは消去しておいて下さい。見出しもない前提です。

(1)シートのメニューから、ツール→マクロ→Visual Basic Editor でVBE画面に移ります。
(2)VBEメニューで、挿入→標準モジュールで標準モジュールを挿入します。
(3)そのコードウインドウ(現れた広い場所です)に下記コードをコピーし貼り付けます。
(4)シートに戻り、ツール→マクロ→マクロでSortEXを実行します。

Public Sub SortEX()
  Dim ws1, ws2 As Worksheet 'ワークシート
  Dim rg As Range 'セル
  Dim dtCount As Long 'データカウンタ
  Dim ColumnsCount1 As Integer '列数(シート1)
  Dim RowsCount2 As Long '行数(シート2)
  Dim MaxRowCount As Long 'シート2で必要な最大行数
  Dim ColCot As Integer '列カウンタ
  Dim LastRow As Long 'シート2の最終行

  Set ws1 = Worksheets("Sheet1")
    ColumnsCount1 = ws1.UsedRange.Columns.Count
  Set ws2 = Worksheets("Sheet2")

  'シート2にデータを転記
  ws2.Cells.ClearContents 'シート2をクリア
  For Each rg In ws1.UsedRange '入力があればシート2にコピーする
    If rg <> "" Then
      dtCount = dtCount + 1: ws2.Cells(dtCount, 1) = rg
    End If
  Next

  'シート2をソートする
  ws2.Activate: Range("A1").Select
  Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess
  'シート1の列数で適切に配置する
  MaxRowCount = Int((ws2.UsedRange.Rows.Count - 1) / ColumnsCount1) + 1
  LastRow = ws2.UsedRange.Rows.Count
  While MaxRowCount < LastRow
    ColCot = ColCot + 1
    Range(Cells(MaxRowCount + 1, ColCot), Cells(LastRow, ColCot)).Cut
    Range("A1").Offset(0, ColCot).Select: ActiveSheet.Paste

    LastRow = ws2.UsedRange.Rows.Count
  Wend
  Range("A1").Select
End Sub
補足コメント
orin

お礼率 20% (31/154)

質問の仕方が悪くて済ません。

A列 B C はシートのABC各列を表します。
1行 2 3 はシートの123各行を表します。
この例では3行3列の各項目に数字がばらばらに入っているのを
SORTしたいと、いう事になります。
A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として
並べ替えられないでしょうか。

nishi6さんの回答で出来るのかどうかは、私のEXCELの力では
無理のようですが、(すみません、難しくて解らないのです。)
これで出来るとしたら勉強してこの回答をコピーして、
やってみようと思います。
投稿日時 - 2001-08-08 10:25:11
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル11

ベストアンサー率 42% (103/245)

>    A列   B    C    A    B    > >C >1行  2 4 5 1  1 2 3 > >2 1 3 3 ===> 2 1 2 4 > >3 2 1 2 3 2 3 5 が何を表しているのかわかりにくいので もう少しわかりやすく書いていただければありがたいです。 ...続きを読む
>    A列   B    C    A    B    >
>C
>1行  2 4 5 1  1 2 3
>
>2 1 3 3 ===> 2 1 2 4
>
>3 2 1 2 3 2 3 5

が何を表しているのかわかりにくいので
もう少しわかりやすく書いていただければありがたいです。
補足コメント
orin

お礼率 20% (31/154)

質問の仕方が悪くて済ません。

A列 B C はシートのABC各列を表します。
1行 2 3 はシートの123各行を表します。
この例では3行3列の各項目に数字がばらばらに入っているのを
SORTしたいと、いう事になります。
A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として
並べ替えられないでしょうか。

nishi6さんの回答で出来るのかどうかは、私のEXCELの力では
無理のようですが、(すみません、難しくて解らないのです。)
これで出来るとしたら勉強してこの回答をコピーして、
やってみようと思います。
投稿日時 - 2001-08-08 14:52:21

  • 回答No.2
レベル13

ベストアンサー率 40% (404/988)

A B C ==>A B C 2 4 5 ==>1 2 3 1 3 3 ==>1 2 4 2 1 2 ==>2 3 5 かな?数字の展開法則ががさっぱり読めません。 予想としては、 (小さい)A1~A3→B1~B3→C1~C3(大きい) という順番に並べたいと言う感じですか。ちがうかなぁ??? 補足願います。 ...続きを読む
A B C ==>A B C
2 4 5 ==>1 2 3
1 3 3 ==>1 2 4
2 1 2 ==>2 3 5

かな?数字の展開法則ががさっぱり読めません。

予想としては、
(小さい)A1~A3→B1~B3→C1~C3(大きい)
という順番に並べたいと言う感じですか。ちがうかなぁ???

補足願います。
補足コメント
orin

お礼率 20% (31/154)

質問の仕方が悪くて済ません。

A列 B C はシートのABC各列を表します。
1行 2 3 はシートの123各行を表します。
この例では3行3列の各項目に数字がばらばらに入っているのを
SORTしたいと、いう事になります。
A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として
並べ替えられないでしょうか。

nishi6さんの回答で出来るのかどうかは、私のEXCELの力では
無理のようですが、(すみません、難しくて解らないのです。)
これで出来るとしたら勉強してこの回答をコピーして、
やってみようと思います。
投稿日時 - 2001-08-08 10:28:08
お礼コメント
orin

お礼率 20% (31/154)

回答いただきまして有難うございます。
質問の仕方が悪くて済ません。

A列 B C はシートのABC各列を表します。
1行 2 3 はシートの123各行を表します。
この例では3行3列の各項目に数字がばらばらに入っているのを
SORTしたいと、いう事になります。
A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として
並べ替えられないでしょうか。

Haizy さんのこの様にしたいのです。

2 4 5 ==>1 2 3
1 3 3 ==>1 2 4
2 1 2 ==>2 3 5

今回、良回答に出来なくてすみません。
有難うございました。
投稿日時 - 2001-08-14 15:18:47
  • 回答No.3
レベル12

ベストアンサー率 52% (322/612)

こんばんは! 私もHaizyさんの書かれている >(小さい)A1~A3→B1~B3→C1~C3(大きい) と思えますが、縦横配列の並べ替えは無理だとおもいます。 1案としては データ範囲以外のセルに =SMALL($A$1:$C$3,(COLUMNS($A$1:A1)-1)*3+ROWS($A$1:A1)) と入力してデータ域と同列同行数まで複写すれば並び変わったものが表示されます ...続きを読む
こんばんは!

私もHaizyさんの書かれている
>(小さい)A1~A3→B1~B3→C1~C3(大きい)
と思えますが、縦横配列の並べ替えは無理だとおもいます。

1案としては
データ範囲以外のセルに
=SMALL($A$1:$C$3,(COLUMNS($A$1:A1)-1)*3+ROWS($A$1:A1))
と入力してデータ域と同列同行数まで複写すれば並び変わったものが表示されます。
それを複写して データ域に 値の貼り付けすればOKです。
(注:式中の*3はデータが3列の時です)
補足コメント
orin

お礼率 20% (31/154)

質問の仕方が悪くて済ません。

A列 B C はシートのABC各列を表します。
1行 2 3 はシートの123各行を表します。
この例では3行3列の各項目に数字がばらばらに入っているのを
SORTしたいと、いう事になります。
A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として
並べ替えられないでしょうか。

nishi6さんの回答で出来るのかどうかは、私のEXCELの力では
無理のようですが、(すみません、難しくて解らないのです。)
これで出来るとしたら勉強してこの回答をコピーして、
やってみようと思います。
投稿日時 - 2001-08-08 10:27:18
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ