• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBのソート処理のやりかた)

VBのソート処理のやり方

このQ&Aのポイント
  • [質問文章] VBのソート処理のやり方について、質問させていただきます。
  • [質問文章] VBのソート処理についての質問です。具体的なやり方を教えていただけないでしょうか?
  • [質問文章] VBのソート処理の方法について詳しく教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.5

第二弾と、第三弾を追加 ソート関数 Public Sub sort1(d1() As String, d2() As Integer) Dim max As Integer Dim na As String Dim i1 As Integer, i2 As Integer Dim cc As Integer cc = UBound(d2) For i1 = 0 To cc For i2 = i1 To cc If d2(i2) > d2(i1) Then max = d2(i2) d2(i2) = d2(i1) d2(i1) = max na = d1(i2) d1(i2) = d1(i1) d1(i1) = na End If Next Next End Sub ソート処理と出力部分のプログラムの追加分 Call sort1(dname, yo) Dim foutput As Integer foutput = FreeFile Open "output.txt" For Output As #foutput For i = LBound(dname) To UBound(dname) Print #foutput, dname(i), yo(i) Debug.Print dname(i), yo(i) Next Close #foutput 出力結果 青木 76 井上 81 江藤 66 柏原 92 小林 87 斉藤 59 佐久間 76 関根 88 塚田 96 富田 83 ソート後の結果 塚田 96 柏原 92 関根 88 小林 87 富田 83 井上 81 佐久間 76 青木 76 江藤 66 斉藤 59 多少、バグもあるかもしれませんが。 結果OKなので、これで良しとしてください。

tao0417
質問者

お礼

段階に分けて教えていただき、本当にありがとうございます。 みんな見たことあるステートメントなので、自分の数値に入れかえ 入力してみます。 これなら、理解しながら進めることができそうです!! 何度も質問に答えていただき本当にありがとうございました。

その他の回答 (4)

  • tom11
  • ベストアンサー率53% (134/251)
回答No.4

こんにちは、 まず、順番に問題を解決した方が、良いと思います。 まず、流れとして 1:ファイルから、データを取り出し、ソート用に加工する 2:データをソートする 3:結果を出力する。 アクセスをもっていないので、エクセルを利用します。 アクセスとエクセルの影響のない部分のVBAで、 処理していますので、どちらでも、動作すると思います。 まず、元データ 青木 076 井上 081 江藤 066 柏原 092 小林 087 斉藤 059 佐久間 076 関根 088 塚田 096 富田 083 名前スペース点数で、メモ帳でも使って、 input.txtファイルを作成する。 まず、第一段目 Dim cd As New Collection Dim finput As Integer Dim d As String Dim i As Integer Dim dcount As Integer Dim dd() As String Dim dname() As String, yo() As Integer Dim dbun() As String finput = FreeFile 'input.txtがあるディレクトリー、自分の環境にあわせる Application.DefaultFilePath = "C:\Documents and Settings\????\My Documents\excel雑\" Open "input.txt" For Input As #finput Do While Not EOF(finput) Line Input #finput, d cd.Add d Loop Close #finput '以上で、データファイルの読み込み終わり 'ここから、ソートするためにデータを加工 ReDim dd(cd.Count - 1), dname(cd.Count - 1), yo(cd.Count - 1) For i = 1 To cd.Count dd(i - 1) = cd.Item(i) dbun() = Split(dd(i - 1), " ") dname(i - 1) = dbun(0) yo(i - 1) = CInt(dbun(1)) Debug.Print dname(i - 1), yo(i - 1) Next 以上で、ファイルから、データを読んで、ソートするデータを 作ります。 第一弾は終わり、ここまで、上手く行ったら、補足してください。 第二弾は、ソート、 第三弾は、出力 

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

UnibonさんのHPに参考になるプログラムがあります。 http://www.geocities.co.jp/SiliconValley/4334/unibon/asp/vbscriptsort.html VBScriptはアクセスなどで使うVBAとほぼ同類の言語です。 変数が全てVariant型という点や、細かい差異はあります。 ここの例ではVBScript特有のステートメントは無いので、 コピペしても実行可能です。 マネすれば課題はクリアですが、VB初心者には何やってるか サッパリだと思います。 あまり、凝った方法を使うとツッコミを入れられた時に困るので、 自分でも納得できたやり方を真似しましょう。

tao0417
質問者

お礼

参考になるURLありがとうございます。 おっしゃる通り、素人の私がいきなり課題ができても おかしい話なので、資料を参考にしながら、 取り組んでみたいと思います。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.2

プログラム経験無しでいきなりソートですか? 無理っぽいと思います。 もっと基本を勉強してからではないでしょうか。 課題がどのような形で出てきているものか知り ませんが無茶な出し方だと思います。

tao0417
質問者

お礼

やっぱり無理なことをさせられていたのですね。 分かりました。ありがとうございます。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 VBと書くと、visual basic の V6とかnetの方が 連想されるので、アクセスのVBAと、書きましょう。 アクセスだと、SQLで、一発なのですが。 学校の課題なのか **********引用********* それをコーディングディングの最初に Open "C:\INFILE.txt" For Input As #1 Open "C:\OUTFILE.txt" For Output As #2 *********************** データベースソフトを使っていて、 普通、こんな処理しないのですが。 必須なのですか。??? そもそも、アクセス使っていると、 このような処理、VBAを使うまでもないのですが。 クエリ一発なのですが。 VBAを使うと言うのも必須なのですか。??

tao0417
質問者

補足

またご回答いただきありがとうございます。 以後アクセスのVBAと書きたいと思います。 今回の課題についてなのですが、 【開発環境としてAccessを使用する。ただし今回はAccess本来の機能は使用せずVBAの環境のみを利用してファイル操作プログラミングを行う】 とあり、「プログラミング工程の一連の流れの把握と、ロジック構築に主眼を置いたもの」と前置きがありました。 プログラミングに触ったことのない私にとって、これらのプログラミングが普通と思っていたのですが、そうじゃないようですね。 ただ、今回は上記のとおり、いろいろと制約があり、その中で答えを導かなければならないので、できることなら、教えていただければと思います。

関連するQ&A