プロが教えるわが家の防犯対策術!

下記のような配列があったとして、
(1)科目名で昇順ソート
(2)氏名で昇順ソート
を行うにはどのように記述すればいいでしょうか?
よろしくお願いいたします。

Dim results(2, 3) As String
results(0, 0) = "国語"
results(1, 0) = "武田"
results(2, 0) = "90点"

results(0, 1) = "英語"
results(1, 1) = "藤田"
results(2, 1) = "32点"

results(0, 2) = "国語"
results(1, 2) = "坂上"
results(2, 2) = "45点"

results(0, 3) = "英語"
results(1, 3) = "浅木"
results(2, 3) = "12点"

「多次元配列のソート方法」の質問画像

A 回答 (1件)

画像を見た感じだと、


> Dim results(2, 3) As String

――というデータ構造を採用した時点で、いけてないような。
Type Result_T: Seito As String: kamoku As String: ten As Integer: End Type
みたいなユーザ定義型を作って処理したほうがよいかと。

ADOとか使ってよいなら、ADODB.Recordsetに突っ込めばソートも一発でできそうな。

どうしても絶対にresults(2, 3)を使わなきゃいけないのだとしたら、比較後のデータ交換時にその配列間でデータを入れ替えればよいだけかと。

どういうアプローチを取ってよいか問題の出題範囲を確認してみては。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!