Excel VBA質問箱 IV

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

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


45278 / 76735 ←次へ | 前へ→

【36456】Re:並び替え
発言  ichinose  - 06/3/31(金) 16:08 -

引用なし
パスワード
   皆さん、こんにちは。


▼Blue さん:
>' ユーザ定義型を使ったサンプル(かなり適当)
>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 While swapped
'ではないですか?

>  
>  ' イミディエイトウィンドウに表示
>  For i = LBound(DiceInfo) To UBound(DiceInfo)
>    Debug.Print CStr(i + 1) & "位:"; DiceInfo(i).Value
>  Next
>End Sub


それはともかく・・・・。

>ともたさんの方法ではエクセルシートを利用しているようですが、
>実はやっているのが
>CSVファイルからデータを読み込んで
>エクセルシートは利用しないで計算させ、
>CSVに出力しているので出来ればシートを利用しない方法がいいです。

「CSVファイルのI/Oだから、シートを利用したくない」の
因果関係がわかりません。
つまり、CVSファイルのを読み込んだり、書き込んだりの処理があっても
シートを利用すれば処理が簡単なら、それのほうが良くないですか?

これ、ワークシート関数のRankを使うと比較的容易に処理できると
思いますが・・・。

>ソートした結果を配列で取得したいです
シートに結果を出した後に、配列に取得することは簡単ですよ!!


ソートのアルゴリズムを学びたいと言うのであれば、
ここの過去ログにも簡単なのから、難しいものまで
ありますけどね!!

0 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 お礼

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