- ベストアンサー
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)
- オフィス系ソフト
- 回答数4
- ありがとう数5
- みんなの回答 (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 '******************** ここまで ********************
その他の回答 (3)
- BlueRay
- ベストアンサー率45% (204/453)
汚いソースですが、べたな操作をマクロにしてみました。如何でしょうか? 使用方法: ソートしたい範囲を範囲選択して、マクロを実行。 質問にあるような順序でソートします。 以下、マクロのソースです。 '******************** ここから ******************** 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 '******************** ここまで ********************
お礼
お手数をおかけしました!ありがとうございます!!!! このマクロでやってみました。 マクロ自体の内容は私にはさっぱりわからないのですが出来ました。 ですが、1つだけ質問させて頂いてよろしいですか? このセルは書式設定で表示形式を【"a-"@】としてありまして、 数字だけ入れれば「a-001」と表示される様になっています。 で、このマクロを実行するとその表示が消えてしまうのです。 でも書式設定の中を見ると設定はそのままです。 しかし、セルの中にある数字は001です。?? ・・・昇順には並べられたので良いのですが、これを元に この番号の順番のままのラベルを作りたいのです。 ちょっと量が膨大なので、出来ればマクロ実行後のデータを ラベル製作に使用したいです。 わがまま言いましてすみませんが、もしおわかりになりましたら 再度回答いただけますでしょうか? よろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17068)
補足を見たがまだ良く判らないので。 A列は4行、B列、C列は3行、D列は2行になっているのは どう言うところから来るのですか。 ソート前がそうなっているからですか。 VBAで(ブランクを除く)全セルデータをソートし、A,B、C,D列に詰めるデータ数(行数)が判っておれば、順に セルに入れていけますが。 データ数はいくらぐらいですか。 昨日データを1列に並べる関数を回答したが、 それを使って手作業で、埋めこんだ方が速いでしょう。 ABCD列とも同じ行数なら、一旦1列にしてソートした 結果のデータを関数でABCD列に分けることが出きるかもしれない。
お礼
>A列は4行、B列、C列は3行、 となっていますのは、入力された時点でそうなってるんです。 例えば、東京の製品番号がA列、大阪のものがB列、福岡のものがC列という感じです。それぞれの場所で製品数が違うので・・・。1~100の製品番号の中には 大阪のものもあれば東京のものもあります。 で、それを製品番号の昇順に並べたいのです。 でも、だいたいBlueRayさんの回答ので出来ました。 ありがとうございました。
- BlueRay
- ベストアンサー率45% (204/453)
どのように昇順に並んでいるのでしょうか? 規則性がよくわからないですよ。元と後が不一致!
補足
ホントだ・・・。 すみません、間違ってました・・・。 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
- Excel2002並べ替えについて
いつもお世話になります。並べ替えでA列に数字がランダムに並んでいます。 A列を昇順で並べ替えようとすると「この操作には同じサイズの結合セルが必要です。」のメッセージが出ます。タイトル行がセルの結合がしてあるのがいけないのでしょうか。教えてください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルの「昇順」での並べ替えについて質問いたします。
エクセルの「昇順」での並べ替えについて質問いたします。 (例) 行に左からセルに現場、名前、成績(数字)、地域(東京等)が入力されていて、各々列をなしているシートがあります。地域を昇順にし、その内訳の中で現場を昇順 さらにその内で名前を昇順にしたいのですがフィルターの簡単な操作でできますか。 エクセルの初心者ですがフィルターには列の左右関係、文字と数字の優劣などがあるのでしょうか。フィルターについてご存知の方教えて下さい。
- 締切済み
- 財務・会計・経理
- エクセルの並べ替え「降順」について
エクセルで「降順」に並べ替えをしたいのですが 上手くいきませんので教えてください。 F列のセルに、他のシートからVLOOKUPで数値を返しており、 F列を「並べ替え→降順」とすると、データがごっそり消えてしまいます。 昇順は問題なくできますが、降順にすると消えてしまいます。 他の列は問題なく降順にできます。 エクセルのバージョンは2016、OSはWindows11です。 よろしくお願いいたします。
- 締切済み
- Excel(エクセル)
- 【エクセル】Excel2007 並べ替えについて
いつもお世話になります。 エクセル2007で並べ替えをしていますが うまくできません。 「空白>数字昇順」にしたいのですが 空白セルを無視して 値が入っているセルのみで ならべかえられてしまいます。 基本的な質問で申し訳ありませんが よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセル 並べ替え
貼付のような表があります。 1列目は2行が結合されている状態で、カタカナで名前が入力してあります。 1列目を基準にして表全体を昇順で並べ替えをしたいのですが、通常通り行うと「同じサイズの結合セルが必要」とメッセージが出て、行えません。 並べ替えを行う方法はありますでしょうか?
- ベストアンサー
- その他MS Office製品
- EXCELでA列しか並べ替えができない?
以前はこんなこと無かったと思うのですが不思議です。 数字の列なのでフリガナ等の問題ではありません。 たとえばF列にある数字で並べ替えをさせても ちゃんと並び変わりません。 このF列を「切り取り」して A列に「切り取ったセルの貼り付け」 を行ってA列で再度並べ替えを行うと 当たり前ですがちゃんと並び変わってくれます。 EXCEL2002 SP3です。 そんな馬鹿なと思いながら何度やっても同じです。 別のBOOKでも同じです。 なぜなんでしょうか?
- ベストアンサー
- その他MS Office製品
- エクセルの並べ替え
エクセルデータの番号順の並べ替えをしたいのですが A列に37、54,22,1・・・などの数字が入っており これを1から順番に並べたいです。 ただ、A列1行目に37が入っていますが 次の54はA列5行目に入っています。 B列以降に他のデータ(名前、住所等)を入れる際 一行では間に合わず、それぞれ2~5行程を使用している為なのですが この状態で並べ替えをすると、数字の入っている行のみが並べ替えられ 入っていない行は後ろの方にまとめられてしまいます。 数行まとめて並べ替えをするにはどのようにすればよいでしょうか。 お詳しい方、よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Excelの並べ替えについて
Excelの並べ替えについて 商品一覧の表を作っているのですが、そのデータには「数字」「アルファベット」「ひらがな」「カタカナ」が含まれています。 昇順で並べ替えを行うと「数字」-「アルファベット」-「ひらがな」-「カタカナ」の順番になりますが、それを例えば「ひらがな」-「カタカナ」-「数字」-「アルファベット」の順番で並べ替えを行うことは可能でしょうか? 現状では並べ替えを行ったあと範囲選択をして入れ替えをしていますが、それ以外に何かよい方法があればご教授お願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
出来ましたっ!!! ありがとうございますっ! ホント、説明不足で何度もすみませんでした。 (自分も良くわかっていないものを説明するのは難しいですね。) こんなワタシにお付き合い下さって、感謝、感謝です。 本当にありがとうございました!