- ベストアンサー
並び替え!
テキストから文字列を読み込んでそれをならびかえる処理を したいのですが どうやったらよいか つまってしまいまして 質問させていただきました。 <テキストの内容> あいうえお さしすせそ おおお ききき しし (テキストにはひらがなが 入っています) これを読み込んで50音順にしてあげたいのですが。 エクセルの並び替えだと あっというまにできてしまうじゃないですか VBには おなじような機能はないのでしょうか? 配列?RECORDSET? 完全につまってしまいました よろしくおねがいいたします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
メモ帳を開き、例えば、あかし、うえだ、えのもと、おおた、かんだ、きのした、くろだ、こぐれ、さとう、いいだ、おおた」を縦に入力してください。すなわち「あかし」を入力しエンタを押して改行し、「うえだ」と入力し、エンタを押すのを続けてください。そして「テスト1.txt」と「名前をつけて保存してください。VBEのコードの画面に Private Sub Form_Click() Dim d(100) As String Open "c:\My Documents\テスト1.txt" For Input As #1 i = 0 '-----ファイルを読んで配列にセットする p01: If EOF(1) Then GoTo p02 Input #1, a i = i + 1 d(i) = a ' MsgBox a GoTo p01 p02: Close #1 '-----ソート開始 For j = 1 To i - 1 For k = j To i If d(j) > d(k) Then w = d(j) d(j) = d(k) d(k) = w End If Next k Next j '------結果をForm1に表示して確認 For s = 1 To i Form1.Print d(s) Next s End Sub 配列d(1)からd(i)を数直線的に置いて考えて,最小のものを一番 左の配列に持ってくるやり方です。視点を左から右へ1つづつ ずらしていきます。これはモデル的な簡略化した一例であり、 本当はソートは面倒くさいプログラムになります。しかし沢山の アルゴリズムがあり、わたし個人では、コンピュターのプログラム のなかで一番面白い分野と思いました。ぜひ関心を持たれることを お勧めします。この質問をみて、エクセルからコンピュターに入る 人にはソートは「既にあるもの」なのですが、昔はパソコンにはソート のプログラムはついてなくて、我流でロータス123に読ませてソート し、テキスト保存したり、下手なプログラムを組んだことを思い出します。 識者が見ればお恥ずかしいものですが、またコーディング ミスのないことをいのりつつ。
その他の回答 (2)
- xkuramae
- ベストアンサー率54% (39/72)
方法はいろいろあるのでしょうが. リストボックスのSortedプロパティを使うのが 簡単だと思いますよ. AddItemでテキストを格納. リスト配列の添え字を0からListCount - 1 まで変えて Listプロパティを使って読み出せばよいでしょう. 2バイト文字のソートに関するプロパティがあるかもしれませんので プロパティは一通り見てください VBは2年前にやったきりなので,このくらいで. (後の回答によっては大恥かくかも..)
- bin-chan
- ベストアンサー率33% (1403/4213)
データは「ひらがな」だけですか? だったらリストボックスかコンボボックスにデータを放り込んで、 SortedプロパティをTrueにして件数分の取り出しループを作るのが簡単でしょう。 漢字を含む場合はこの方法は使えません(コード順にソートされてしまうから)