• ベストアンサー

Excelでの並べ替え

こんにちは。 1つのシート内のセルにバラバラに、数字がある場合 それらをまとめて昇順に並べ替えをすることは出来ますか? 例えば、 a-001 a-009 a-008 a-007 a-005 a-002 a-006 a-012 a-010 a-011 a-003 a-004 を a-001 a-005 a-008 a-010 a-002 a-006 a-009 a-011 a-013 a-007 a-012 a-004 と並べ替えをしたいのです。 やはり、これは1列になっていないとダメなのでしょうか? よろしくお願いします。

  • Momozo
  • お礼率88% (132/150)

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

  • ベストアンサー
  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.4

表示形式を【"a-"@】と設定してあったんですね・・・やられた。 てっきり文字列かと思ってました。 というわけで、書式設定に対応したマクロへ変更しました。 如何でしょう。お望みの結果になれば幸いです。 以下、マクロのソースです。 '******************** ここから ******************** Sub AreaSort()   Application.DisplayAlerts = False      Sheets.Add , ActiveSheet      Sheets(1).Select   arLeft = Selection.Column   arTop = Selection.Row   arRight = arLeft + Selection.Columns.Count - 1   arBottom = arUp + Selection.Rows.Count - 1      c = 0   For co = 0 To arRight     For ro = 0 To arBottom       wk = Cells(ro + arTop, co + arLeft).Value              If Trim(wk) <> "" Then         c = c + 1                  Sheets(2).Cells(c, 1).NumberFormatLocal = "@"         Sheets(2).Cells(c, 1).FormulaR1C1 = "'" & CStr(wk)       End If     Next   Next   Sheets(2).Select   Columns("A:A").Select   Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _     :=xlPinYin   Sheets(1).Select   c = 0   For co = 0 To arRight     For ro = 0 To arBottom       wk = Cells(ro + arTop, co + arLeft).Value              If Trim(wk) <> "" Then         c = c + 1         Cells(ro + arTop, co + arLeft).FormulaR1C1 = CStr(Sheets(2).Cells(c, 1).Value)       End If     Next   Next   Sheets(2).Select   ActiveWindow.SelectedSheets.Delete      Application.DisplayAlerts = True End Sub '******************** ここまで ********************

Momozo
質問者

お礼

出来ましたっ!!! ありがとうございますっ! ホント、説明不足で何度もすみませんでした。 (自分も良くわかっていないものを説明するのは難しいですね。) こんなワタシにお付き合い下さって、感謝、感謝です。 本当にありがとうございました!

その他の回答 (3)

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.3

汚いソースですが、べたな操作をマクロにしてみました。如何でしょうか? 使用方法:  ソートしたい範囲を範囲選択して、マクロを実行。 質問にあるような順序でソートします。 以下、マクロのソースです。 '******************** ここから ******************** Sub AreaSort()   Application.DisplayAlerts = False      Sheets.Add , ActiveSheet      Sheets(1).Select   arLeft = Selection.Column   arTop = Selection.Row   arRight = arLeft + Selection.Columns.Count - 1   arBottom = arUp + Selection.Rows.Count - 1      c = 0   For co = 0 To arRight     For ro = 0 To arBottom       wk = Cells(ro + arTop, co + arLeft).Value              If Trim(wk) <> "" Then         c = c + 1                  Sheets(2).Cells(c, 1).Value = wk       End If     Next   Next   Sheets(2).Select   Columns("A:A").Select   Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _     :=xlPinYin   Sheets(1).Select   c = 0   For co = 0 To arRight     For ro = 0 To arBottom       wk = Cells(ro + arTop, co + arLeft).Value              If Trim(wk) <> "" Then         c = c + 1         Cells(ro + arTop, co + arLeft).Value = Sheets(2).Cells(c, 1).Value       End If     Next   Next   Sheets(2).Select   ActiveWindow.SelectedSheets.Delete      Application.DisplayAlerts = True End Sub '******************** ここまで ********************

Momozo
質問者

お礼

お手数をおかけしました!ありがとうございます!!!! このマクロでやってみました。 マクロ自体の内容は私にはさっぱりわからないのですが出来ました。 ですが、1つだけ質問させて頂いてよろしいですか? このセルは書式設定で表示形式を【"a-"@】としてありまして、 数字だけ入れれば「a-001」と表示される様になっています。 で、このマクロを実行するとその表示が消えてしまうのです。 でも書式設定の中を見ると設定はそのままです。 しかし、セルの中にある数字は001です。?? ・・・昇順には並べられたので良いのですが、これを元に この番号の順番のままのラベルを作りたいのです。 ちょっと量が膨大なので、出来ればマクロ実行後のデータを ラベル製作に使用したいです。 わがまま言いましてすみませんが、もしおわかりになりましたら 再度回答いただけますでしょうか? よろしくお願いします。

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

補足を見たがまだ良く判らないので。 A列は4行、B列、C列は3行、D列は2行になっているのは どう言うところから来るのですか。 ソート前がそうなっているからですか。 VBAで(ブランクを除く)全セルデータをソートし、A,B、C,D列に詰めるデータ数(行数)が判っておれば、順に セルに入れていけますが。 データ数はいくらぐらいですか。 昨日データを1列に並べる関数を回答したが、 それを使って手作業で、埋めこんだ方が速いでしょう。 ABCD列とも同じ行数なら、一旦1列にしてソートした 結果のデータを関数でABCD列に分けることが出きるかもしれない。

Momozo
質問者

お礼

>A列は4行、B列、C列は3行、 となっていますのは、入力された時点でそうなってるんです。 例えば、東京の製品番号がA列、大阪のものがB列、福岡のものがC列という感じです。それぞれの場所で製品数が違うので・・・。1~100の製品番号の中には 大阪のものもあれば東京のものもあります。 で、それを製品番号の昇順に並べたいのです。 でも、だいたいBlueRayさんの回答ので出来ました。 ありがとうございました。

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.1

どのように昇順に並んでいるのでしょうか? 規則性がよくわからないですよ。元と後が不一致!

Momozo
質問者

補足

ホントだ・・・。 すみません、間違ってました・・・。 a-001 a-009 a-008 a-007 a-005 a-002 a-006 a-012 a-010 a-011 a-003 a-004 を ::: --A-- --B-- --C-- --D-- -1- a-001 a-005 a-008 a-011 -2- a-002 a-006 a-009 a-012 -3- a-003 a-007 a-010 xxxxx -4- a-004 xxxxx xxxxx xxxxx です。 「--A-- / -1-」はセル番号です。(ちょっとずれてるかもしれません。) xxxxxx は空白を意味してます。 A1からD4までのセル内にある数字(文字)を 昇順に並べることは出来ますか?(ブランクのセルもある) 説明がわかりづらくてすみません・・・。 よろしくお願いします。

関連するQ&A

  • エクセルの並べ替え

    エクセル98を使用しています。 文字の入ったものの並べ替えの仕方を教えてください。 たとえば、a123のセルとa1000というセルを昇順に並べ替えようとすると「a1000」の方が先にきてしまいます。 これを数字だけの昇順に並ぶように設定するにはどのようにしたらよいのでしょうか?やはり、0(ゼロ)をいれるなどして、桁を合わせなければだめなのでしょうか?どなたか教えてください。

  • Excel2002並べ替えについて

    いつもお世話になります。並べ替えでA列に数字がランダムに並んでいます。 A列を昇順で並べ替えようとすると「この操作には同じサイズの結合セルが必要です。」のメッセージが出ます。タイトル行がセルの結合がしてあるのがいけないのでしょうか。教えてください。よろしくお願いいたします。

  • エクセルの「昇順」での並べ替えについて質問いたします。

    エクセルの「昇順」での並べ替えについて質問いたします。 (例) 行に左からセルに現場、名前、成績(数字)、地域(東京等)が入力されていて、各々列をなしているシートがあります。地域を昇順にし、その内訳の中で現場を昇順 さらにその内で名前を昇順にしたいのですがフィルターの簡単な操作でできますか。 エクセルの初心者ですがフィルターには列の左右関係、文字と数字の優劣などがあるのでしょうか。フィルターについてご存知の方教えて下さい。

  • エクセルの並べ替え「降順」について

    エクセルで「降順」に並べ替えをしたいのですが 上手くいきませんので教えてください。 F列のセルに、他のシートからVLOOKUPで数値を返しており、 F列を「並べ替え→降順」とすると、データがごっそり消えてしまいます。 昇順は問題なくできますが、降順にすると消えてしまいます。 他の列は問題なく降順にできます。 エクセルのバージョンは2016、OSはWindows11です。 よろしくお願いいたします。

  • 【エクセル】Excel2007 並べ替えについて

    いつもお世話になります。 エクセル2007で並べ替えをしていますが うまくできません。 「空白>数字昇順」にしたいのですが 空白セルを無視して  値が入っているセルのみで ならべかえられてしまいます。 基本的な質問で申し訳ありませんが よろしくお願いします。

  • エクセル 並べ替え

    貼付のような表があります。 1列目は2行が結合されている状態で、カタカナで名前が入力してあります。 1列目を基準にして表全体を昇順で並べ替えをしたいのですが、通常通り行うと「同じサイズの結合セルが必要」とメッセージが出て、行えません。 並べ替えを行う方法はありますでしょうか?

  • EXCELでA列しか並べ替えができない?

    以前はこんなこと無かったと思うのですが不思議です。 数字の列なのでフリガナ等の問題ではありません。 たとえばF列にある数字で並べ替えをさせても ちゃんと並び変わりません。 このF列を「切り取り」して A列に「切り取ったセルの貼り付け」 を行ってA列で再度並べ替えを行うと 当たり前ですがちゃんと並び変わってくれます。 EXCEL2002 SP3です。 そんな馬鹿なと思いながら何度やっても同じです。 別のBOOKでも同じです。 なぜなんでしょうか?

  • エクセルの並べ替え

    エクセルデータの番号順の並べ替えをしたいのですが A列に37、54,22,1・・・などの数字が入っており これを1から順番に並べたいです。 ただ、A列1行目に37が入っていますが 次の54はA列5行目に入っています。 B列以降に他のデータ(名前、住所等)を入れる際 一行では間に合わず、それぞれ2~5行程を使用している為なのですが この状態で並べ替えをすると、数字の入っている行のみが並べ替えられ 入っていない行は後ろの方にまとめられてしまいます。 数行まとめて並べ替えをするにはどのようにすればよいでしょうか。 お詳しい方、よろしくお願い致します。

  • Excelの並べ替えについて

    Excelの並べ替えについて 商品一覧の表を作っているのですが、そのデータには「数字」「アルファベット」「ひらがな」「カタカナ」が含まれています。 昇順で並べ替えを行うと「数字」-「アルファベット」-「ひらがな」-「カタカナ」の順番になりますが、それを例えば「ひらがな」-「カタカナ」-「数字」-「アルファベット」の順番で並べ替えを行うことは可能でしょうか? 現状では並べ替えを行ったあと範囲選択をして入れ替えをしていますが、それ以外に何かよい方法があればご教授お願いいたします。

  • エクセルの並べ替え

    こんにちは。 エクセルの基礎ですが質問させてください。 A列に数字、b列に商品名、c列に金額が記載されている表があったとします。 ほぼ50音順に並べ替えする方法を教えてください。 単純にb列をクリック→並べ替えで名前の並べ替えは出来ますが、金額が連動してこないので、金額と商品が一致して並べ替えできる方法を教えてください。 A列は一致してもしなくてもいいです。

専門家に質問してみよう