こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

セルの中の数字を横1列に昇順に並べる方法

どなたかご存知でしたら回答をよろしくお願いします。
【質問】
下図の様に、5×5セルの中に数字が1~99迄重複してランダムに入っています。
これを、昇順に横1列にしてA7から右に並べる方法が知りたいです。

〇例題
  A B C D E 
1 05 08 34 12 22
2 07 10 11 20 29
3 80 10 12 17 31
4 08 19 24 90 27
5 02 30 04 09 26

〇実行後
02 04 05 07 08 08 09 10 10 11 12 12 17 19 20 22 24 26 27 29 30 31 34 80 90

〇注意事項
 ・使用するエクセルは2010です。
 ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)

以上、よろしくお願いします。

投稿日時 - 2018-11-11 12:39:53

QNo.9556757

困ってます

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

どうぞ~
Sub Test()
  Dim c As Range, i As Long
  For Each c In Range("A1:E5")
    i = i + 1
    Cells(7, i) = c
  Next
  Range("A7").Resize(, i).Sort Key1:=Rows(7), _
  Order1:=xlAscending, Header:=xlNo, Orientation:=xlLeftToRight
  ActiveSheet.Sort.SortFields.Clear
End Sub

投稿日時 - 2018-11-11 12:56:38

お礼

いつもお世話になっております。
早速の回答ありがとうございます。
得たい結果になりました。
またお願いします。

投稿日時 - 2018-11-11 14:41:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>下図の様に、5×5セルの中に数字が1~99迄重複してランダムに入っています。
「数字」とは数字の文字列ですか?
セルへ入力する値には数値と文字列があります。
数字の場合はキーボードから入力すると数値になりますが入力前にセルの表示形式を文字列に設定すると数字であっても文字列として入力されます。
値の大小を判断するときに文字列と数値が混在すると予想外の結果になりますので明確にする必要があります。

>これを、昇順に横1列にしてA7から右に並べる方法が知りたいです。
関数で処理する場合は次の数式をA7へ設定し、右へY7セルまでコピーしてください。
=TEXT(INT(SMALL(INDEX($A$1:$E$5*10000+COLUMN($A$1:$E$5)*100+ROW($A$1:$E$5),0),COLUMN(A7))/10000),"00")
A7~Y7へ文字列が昇順に代入されます。
A1~E5の値は文字列でも数値でも同じ結果になるように処理しています。

投稿日時 - 2018-11-11 14:10:57

お礼

いつもお世話になっております。
今回の場合の数字は数値です。
今後、質問の際には気負付けます。
関数でできるのですね。
ありがとうございます。

投稿日時 - 2018-11-11 14:44:41

あなたにオススメの質問