Excel VBA質問箱 IV

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

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


39262 / 76732 ←次へ | 前へ→

【42583】Re:並び替えの件で・・・
回答  Kein  - 06/9/15(金) 16:57 -

引用なし
パスワード
   結論から言うと、作業列を使ってRIGHT関数で数値の部分を抜き出すやりかたの方が
ずっと簡単・明瞭に処理できると思います。
もしどうしてもマクロ内部で並べ替えしたければ、仮にアクティブシートの
A1 から A列 にデータが並んでいるとして・・

Sub Test_MyDataSort()
  Dim Ary() As Integer
  Dim St As String
  Dim LR As Long, i As Long, j As Long
  Dim buf As Variant, vElm As Variant

  LR = Range("A65536").End(xlUp).Row
  ReDim Ary(1 To LR)
  For i = 1 To LR
    Ary(i) = CInt(Right(Cells(i, 1).Value, 3))
  Next i
  buf = Array_Sort(Ary())
  For j = 1 To LR
    With Cells(j, 1)
     St = Left$(.Value, Len(.Value) - 3)
     .Value = St & buf(j)
    End With
  Next j
End Sub

Private Function Array_Sort(ByVal NotSortedArry As Variant) As Variant
  Dim i As Long, j As Long
  Dim vElm As Variant

  For i = LBound(NotSortedArry) To UBound(NotSortedArry)
    For j = i + 1 To UBound(NotSortedArry)
     If NotSortedArry(i) > NotSortedArry(j) Then
       vElm = NotSortedArry(j)
       NotSortedArry(j) = NotSortedArry(i)
       NotSortedArry(i) = vElm
     End If
    Next
  Next
  Array_Sort = NotSortedArry
End Function

というマクロで出来ます。見てのとおり、かなり複雑なコードです。
ちなみにこの配列内ソートのロジックは、コロスケさんのサイト↓を
参考にさせていただきました。(と言うより丸写しですが・・すいません)
http://puremis.net/excel/code/022.shtml
1 hits

【42581】並び替えの件で・・・ kouka 06/9/15(金) 16:00 質問
【42583】Re:並び替えの件で・・・ Kein 06/9/15(金) 16:57 回答
【42608】Re:並び替えの件で・・・ Kein 06/9/16(土) 12:47 回答
【42590】Re:並び替えの件で・・・ だるま 06/9/15(金) 20:19 回答
【42603】Re:並び替えの件で・・・ ichinose 06/9/16(土) 11:13 回答
【42607】Re:並び替えの件で・・・ Ned 06/9/16(土) 12:38 発言
【42629】Re:並び替えの件で・・・ Ned 06/9/16(土) 23:10 発言
【42675】Re:並び替えの件で・・・ kouka 06/9/19(火) 10:14 お礼

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