• ベストアンサー

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

   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)

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

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

複数列に折り返して並べると解釈して下記のマクロを書いて見ました。参考にして下さい。 シート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
質問者

補足

質問の仕方が悪くて済ません。 A列 B C はシートのABC各列を表します。 1行 2 3 はシートの123各行を表します。 この例では3行3列の各項目に数字がばらばらに入っているのを SORTしたいと、いう事になります。 A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として 並べ替えられないでしょうか。 nishi6さんの回答で出来るのかどうかは、私のEXCELの力では 無理のようですが、(すみません、難しくて解らないのです。) これで出来るとしたら勉強してこの回答をコピーして、 やってみようと思います。

その他の回答 (3)

  • comv
  • ベストアンサー率52% (322/612)
回答No.3

こんばんは! 私も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
質問者

補足

質問の仕方が悪くて済ません。 A列 B C はシートのABC各列を表します。 1行 2 3 はシートの123各行を表します。 この例では3行3列の各項目に数字がばらばらに入っているのを SORTしたいと、いう事になります。 A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として 並べ替えられないでしょうか。 nishi6さんの回答で出来るのかどうかは、私のEXCELの力では 無理のようですが、(すみません、難しくて解らないのです。) これで出来るとしたら勉強してこの回答をコピーして、 やってみようと思います。

  • Haizy
  • ベストアンサー率40% (404/988)
回答No.2

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
質問者

お礼

回答いただきまして有難うございます。 質問の仕方が悪くて済ません。 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 今回、良回答に出来なくてすみません。 有難うございました。

orin
質問者

補足

質問の仕方が悪くて済ません。 A列 B C はシートのABC各列を表します。 1行 2 3 はシートの123各行を表します。 この例では3行3列の各項目に数字がばらばらに入っているのを SORTしたいと、いう事になります。 A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として 並べ替えられないでしょうか。 nishi6さんの回答で出来るのかどうかは、私のEXCELの力では 無理のようですが、(すみません、難しくて解らないのです。) これで出来るとしたら勉強してこの回答をコピーして、 やってみようと思います。

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.1

>    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
質問者

補足

質問の仕方が悪くて済ません。 A列 B C はシートのABC各列を表します。 1行 2 3 はシートの123各行を表します。 この例では3行3列の各項目に数字がばらばらに入っているのを SORTしたいと、いう事になります。 A列B列C列毎に並べるのは出来ますが、A、B、C列全てを一塊として 並べ替えられないでしょうか。 nishi6さんの回答で出来るのかどうかは、私のEXCELの力では 無理のようですが、(すみません、難しくて解らないのです。) これで出来るとしたら勉強してこの回答をコピーして、 やってみようと思います。

関連するQ&A

  • エクセル2002でのソートについて

    A B C 1 A1 B1 C1 2 __ B2 C2 3 A5 B5 C5 4 __ B4 C4 5 A3 B3 C3 6 __ B6 C6    ↓ソート A B C 1 A1 B1 C1 2 __ B2 C2 3 A3 B3 C3 4 __ B4 C4 5 A5 B5 C5 6 __ B6 C6 (1)A列をキーに (2)1と2行,3と4行,5と6行を一纏めに ソートする方法はありますでしょうか?

  • エクセルの並び替え

    初歩的かと思いますがご教授願います。 以下のようなセルがあったとします 列行A B C (1) 1   2 (2) 2   3 (3) 3   1 これを何らかの方法を用いて A B C 1   1 2   2 3   3 という形に並び替えられないでしょうか? 色々検索してみましたがキーワードが悪いのか求めるものにたどり着けませんでした。(そもそもないのか 何卒よろしくお願いします。

  • エクセルでのソートがうまくいきません

    エクセル2000を使っています。 VLOOKUP関数を利用して見積書を作っていますが、時たま上手くいかない事があります。 見積書は、 見積書のページに A列:数字4桁の商品コード B列:商品名 C列:単価 (例:1001 アイスクリーム 1,500) 商品コードのページも全く同じで、A列でソートしてあります。 VLOOKUPを使って、見積書のA列の4桁の数字に対応した商品コードのB列C列からデータを持ってくるようにして、見積もり書のB列とC列をうめる・・・という簡単な仕組みです。 ところが、なぜかB列とC列にうまくデータを持ってこられない行がいくつか出てくる事があります。(#N/Aと表示される) ちなみに、見積書も商品コードもA列のセルは文字列に設定しています。 また、変換できなかったA列の数字を上書きして入力すると半分くらいはB列C列が#N/Aから本来のデータになるのですが、相変わらず変化なしの場合もあります。 そのような場合は、見積書のA列に商品コードのA列をコピーしたものを貼り付けて上書きするとちゃんと表示できるようになります。 この場合の見積書は、過去に作ったいろんな店舗への見積書を行追加して新たに作った「年間の見積書の全て」といった物なので、時によってA列のセルの性格が違っている場合があるかも・・・という訳で改めてA列を文字列に設定し直しています。 が、これをやってもA列での並べ替えもうまく昇順にならない場合がありますので、やはりセルによっては統一されていない部分があるのかと調べてみましたが全て同じく文字列になっています。 どうにも訳が判りません。 長い文章で申し訳ありませんが、御判りの方がおいででしたら後教授ください。

  • エクセルのソート

    エクセルでソートをかけたいのですが・・・・・・ たとえピポットテーブルで集計をかけたものがあるとします。 集計では、元数字の行とそれに「集計」の文言が入った行になりますが、その「集計」の 行だけを別のシートなりに取り出したいのですが何かいい方法はありませんでしょうか?  例      A列      B列      C列       1  ○○産業   ○○支店   100000     2  ○○産業○○支店 集計  100000     3  ○○商会            500000     4  ○○商会 集計        500000    となった場合2・4行目の「集計」の入った行を抜きたいのです。 宜しくお願いします。

  • エクセルの並び替え

    エクセルの並び替えをしたいのですが、  最優先させるキー:A列  2番目:B列 のように並べ替えたいので B列を最優先させるキーに指定して並べ替え    ↓ OK   A列を最優先させるキーに指定して並べ替え をしました。ですが、こうなってしまいます   ↓↓ こうしたいのですが↓↓ A列      B列      A列   B列 1       A       1   A 1       B       1   A  1       C       1   B 1       A       1   B   1       B       1   C  1       C       1   C ちなみに本当は数字ではなく文字でユーザー設定リストを使って並べ替えています。分かりにくい質問で申し訳ないのですがお願いします。

  • Excelの並び替えについて

    Excel2007を使っています。 A~C列に入っている数値のデータを、上からa1,b1,c1,a2,b2,c2,a3.b3...という風に1列に並べ替えたいのですが、どうしたらいいでしょうか?

  • エクセルのセルの並び替え

    A列の1~100行まで値(数字)が入力されていると仮定して、 A列の100行目のセルの値をB列の1行目のセルへ、 A列の99行目のセルの値をB列の2行目のセルへ、 というように並び替える方法を教えていただけないでしょうか? また、この時の各セルの値の大きさは関係ないです。 よろしくお願いします。

  • エクセルでの行の並び替えについてお願いいたします

    XPでエクセルのデーターたとえばA列に日付B列に名称 C列に数値等を入力しています C列 D列に一つのセルを外枠で囲みます たとえば1行目のC列に1個  5行目のD列に1個 8行目のC列に一個など 他のセルは外枠で囲んでおりません 変則的な使用理由は支払日の表を作成しています A列支払予定日 B列口座自動引落 C列コンビニ払い込み D列集金来社 などの振り分けで 支払方法が間違わない様 あらかじめ入力位置が分かる様 セルを囲いました。 支払予定なので入力時は問題なかったのですが 1月も終わりに近づき 支払日完了日がC列 D列 などが変わって来たので A列の日付を代え日付順に行をソートして並び替えた所 囲ったセルはソートされず 囲いと内容が合わなくなってしまいました。 仕方なく今日は切り取り/貼り付けで並び替えしましたが囲ったセルごとソート出来る方法がありましたら ご伝授いただきたいと思います。

  • エクセルのデータ並び替え

    列(A)に1000個あるデータを、4列X250行に自動的に並び替える方法はありますか? つまり A   A B C D B   E F G H C ⇒ I J K L D   M N O P E   ・ ・ ・ ・ ・ ・ ・ と、並べかえたいのですが、いい方法はありませんでしょうか?

  • エクセルで、こんな並び替えできますか?

    お世話になります。 A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 セルって、このように並んでいますよね。 それらのセルには、数字が入っているのですが、 これを、C列に、・・・ A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 このように、入っている数字をC列に立てに並び替えたいのです。 どうすれば、いいですか? なるべく 簡単な方法をお願いします。

専門家に質問してみよう