こんにちは。
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列になっていないとダメなのでしょうか?
よろしくお願いします。
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
'******************** ここまで ********************
出来ましたっ!!!
ありがとうございますっ!
ホント、説明不足で何度もすみませんでした。
(自分も良くわかっていないものを説明するのは難しいですね。)
こんなワタシにお付き合い下さって、感謝、感謝です。
本当にありがとうございました!
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
'******************** ここまで ********************
お手数をおかけしました!ありがとうございます!!!!
このマクロでやってみました。
マクロ自体の内容は私にはさっぱりわからないのですが出来ました。
ですが、1つだけ質問させて頂いてよろしいですか?
このセルは書式設定で表示形式を【"a-"@】としてありまして、
数字だけ入れれば「a-001」と表示される様になっています。
で、このマクロを実行するとその表示が消えてしまうのです。
でも書式設定の中を見ると設定はそのままです。
しかし、セルの中にある数字は001です。??
・・・昇順には並べられたので良いのですが、これを元に
この番号の順番のままのラベルを作りたいのです。
ちょっと量が膨大なので、出来ればマクロ実行後のデータを
ラベル製作に使用したいです。
わがまま言いましてすみませんが、もしおわかりになりましたら
再度回答いただけますでしょうか?
よろしくお願いします。
No.2
- 回答日時:
補足を見たがまだ良く判らないので。
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さんの回答ので出来ました。
ありがとうございました。
No.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-- --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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのソート(並べ替え) 2 2022/05/15 22:54
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) DATEDIFで作成した勤務年数の並べ替えがうまくいかない 3 2023/07/31 17:09
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Excel(エクセル) Excelグラフのラベルオプションの並べ替えは可能ですか。セルの値を最後にしたいのですが。 1 2022/06/05 10:45
- Excel(エクセル) Excelでの並べ替えについて 5 2022/11/26 22:18
- Excel(エクセル) Googleスプレッドシートの割合の関数と円グラフの並べ替えについて 1 2022/07/22 17:31
- Excel(エクセル) Excelで、行に複数の数字が入力されているセルが複数の列存在し、行を跨いでセル内の数値を並び替える 5 2022/06/17 18:03
- その他(Microsoft Office) エクセルで串刺ししたシートの並べ替えをしたいです 4 2023/02/14 11:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセル VLOOKUPが反映されない
-
エクセルVBA Unionはなぜ遅い?
-
桁数が混在する並び替えの方法
-
エクセルで一部除外した数字を...
-
エクセル 並び替え
-
エクセルvba 一つ上の行を指定...
-
Excelで自動的に並べ替えなんて...
-
オートフィルについて(急ぎ!)
-
EXCEL VBA 指定範囲内で特定の...
-
Excelで1列の数字の内、ある行...
-
エクセルマクロでA欄に値があ...
-
EXCEL 指定した曜日に番号を振...
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelで行ごとコピー、同じ行を...
-
PDFの一部を切り取って別のシー...
-
エクセル
-
【Excel】貼り付けた画像がいつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセルの関数SUBSTITUTEを、...
-
エクセルVBA Unionはなぜ遅い?
-
桁数が混在する並び替えの方法
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルで一部除外した数字を...
-
エクセルで列内の同じIDの商品...
-
Excelで自動的に並べ替えなんて...
-
エクセル マクロで列を連続し...
-
エクセルvba 一つ上の行を指定...
-
EXCELである列を上から順にチェ...
-
EXCEL 指定した曜日に番号を振...
-
エクセルで2列を検索し2列とも...
-
エクセル 並び替え
-
ExcelVBA:列方向の並び替え O...
-
アクティブセルのある行の任意...
-
エクセル VLOOKUPが反映されない
-
オートフィルについて(急ぎ!)
-
VBA マクロの組み方
おすすめ情報