Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1336 / 13645 ツリー ←次へ | 前へ→

【75048】数字を若い順に表示させたい 13/11/20(水) 10:12 質問[未読]
【75049】Re:数字を若い順に表示させたい ウッシ 13/11/20(水) 15:14 回答[未読]
【75051】Re:数字を若い順に表示させたい 13/11/21(木) 8:07 お礼[未読]
【75050】Re:数字を若い順に表示させたい ichinose@昼食は肉まんだけ 13/11/21(木) 7:11 発言[未読]
【75052】Re:数字を若い順に表示させたい 13/11/21(木) 8:10 お礼[未読]

【75048】数字を若い順に表示させたい
質問    - 13/11/20(水) 10:12 -

引用なし
パスワード
   数字8629等の数字を若い順(2689)に並べ替えて表示させる
簡単なVBAを知りたいのですが、教えてください。

【75049】Re:数字を若い順に表示させたい
回答  ウッシ  - 13/11/20(水) 15:14 -

引用なし
パスワード
   ▼信 さん:

こんにちは

配列に入れてソートしてもいいですけど、作業シートが使えるなら

Sub test()
  Dim a As Worksheet
  Dim h As Long
  Dim i As Long
  Dim n As Long
  Dim s As Variant
  Dim t As Range
  Dim o As Object
  
  n = 8629

  h = Len(n)
  Set a = Worksheets("Sheet1") '作業用シート
  ReDim s(1 To h, 1 To 1)
  
  For i = 1 To h
    s(i, 1) = Mid(n, i, 1)
  Next
  Set t = a.Range("A1").Resize(h, 1)
  t.Value = s
  t.Sort Key1:=t(1, 1), Order1:=xlAscending
  
  Set o = Application.WorksheetFunction
  MsgBox Join(o.Index(o.Transpose(t.Value), 1, 0), "")

End Sub

とかでも出来ます。

【75050】Re:数字を若い順に表示させたい
発言  ichinose@昼食は肉まんだけ  - 13/11/21(木) 7:11 -

引用なし
パスワード
   おはようございます。
数字だけのデータなら、

Sub sample()
  With Range("a1:a10")
    .Columns("a:b").Clear
    .Formula = "=int(rand()*100)+1"
    .Value = .Value
    MsgBox "A列の数字を昇順に並べ替えた結果をB列に表示すると・・・"
    With .Offset(0, 1)
     .Formula = "=small(" & .Offset(0, -1).Address & ",row())"
     .Value = .Value
    End With
  End With
End Sub

なんて方法もありますねえ!!
私も研修中に同じ問題をだされて、Min関数を使って、回答したら、
この関数は、使っては駄目と言われましたけどねえ!!


【75051】Re:数字を若い順に表示させたい
お礼    - 13/11/21(木) 8:07 -

引用なし
パスワード
   ウッシ さんへ
有難うございました。
数字を若い順位並べ替えるだけでなく、Mid関数をループを使って文字を取得する
使い方、並べ替えの方法等初心者の私にはとても参考になりました。
助かりました。有難う御座いました。

【75052】Re:数字を若い順に表示させたい
お礼    - 13/11/21(木) 8:10 -

引用なし
パスワード
   ▼ichinoseさんへ
有難うございました。
また、違った方法でも並べ替えらる方法を一つ覚えました。
初心者の私にはとても参考になりました。

1336 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free