Excel VBA質問箱 IV

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

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


45283 / 76732 ←次へ | 前へ→

【36448】Re:並び替え
発言  Blue  - 06/3/31(金) 14:21 -

引用なし
パスワード
   ' ユーザ定義型を使ったサンプル(かなり適当)
Option Explicit

Private Type Dice
  Value As Integer  ' 目
  Count As Integer  ' 回数
End Type

Public Sub Test()
  Dim CSVData() As String
  Dim DiceInfo(5) As Dice ' サイコロの情報
  Dim i As Long
  Dim swapped As Boolean
  Dim temp As Dice
  
  ' 初期化
  For i = LBound(DiceInfo) To UBound(DiceInfo)
    DiceInfo(i).Value = i + 1
  Next
  
  ' カンマ区切りに配列に設定
  CSVData = Split("1,1,1,1,2,2,2,3,3,5,6,6", ",")
  
  ' 振り分け
  For i = LBound(CSVData) To UBound(CSVData)
    DiceInfo(CInt(CSVData(i)) - 1).Count = _
             DiceInfo(CInt(CSVData(i)) - 1).Count + 1
  Next
  
  ' 回数による降順並び替え(バブルソート)
  Do
    swapped = False
    For i = LBound(DiceInfo) To UBound(DiceInfo) - 1
      If DiceInfo(i).Count < DiceInfo(i + 1).Count Then
        swapped = True
        ' 入れ替え
        temp = DiceInfo(i)
        DiceInfo(i) = DiceInfo(i + 1)
        DiceInfo(i + 1) = temp
      End If
    Next
  Loop Until swapped
  
  ' イミディエイトウィンドウに表示
  For i = LBound(DiceInfo) To UBound(DiceInfo)
    Debug.Print CStr(i + 1) & "位:"; DiceInfo(i).Value
  Next
End Sub

1 hits

【36443】並び替え グラ吉 06/3/31(金) 10:53 質問
【36445】Re:並び替え ともた 06/3/31(金) 12:36 回答
【36446】Re:並び替え グラ吉 06/3/31(金) 13:13 質問
【36448】Re:並び替え Blue 06/3/31(金) 14:21 発言
【36456】Re:並び替え ichinose 06/3/31(金) 16:08 発言
【36464】Re:並び替え Blue 06/3/31(金) 17:43 お礼
【36613】Re:並び替ヲ グラ吉 06/4/5(水) 15:43 お礼

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