• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Access】順位を付けたい)

Accessで順位付けを行いたい場合の方法とは?

このQ&Aのポイント
  • Accessで順位付けを行いたい場合、VBAを使用する方法があります。サブクエリを使用する場合は、レコード数が多くなると処理が遅くなる可能性がありますが、VBAを使用することで処理速度を向上させることができます。
  • 順位付けを行うためには、ランクを格納するためのテーブルを作成し、「コード」「獲得数」「期ごと」「順位」のフィールドを設定します。次に、VBAコードを使用してテーブル内のデータを処理し、順位を付けます。処理の基準となる条件を指定し、ランクを計算する方法もあります。
  • 例えば、「コード」「獲得数」「期ごと」の3つのフィールドを元に、「獲得数」の降順でデータを並べ替え、順位を計算することができます。VBAコード内でループ処理を行い、データの比較を行いながら順位を付けると効率的です。AccessのVBAは初心者でも学びやすいため、試行錯誤しながら順位付けを行うことができます。

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

  • ベストアンサー
回答No.2

No.1 の回答のコードにいつくか間違いがありましたので、下記に訂正します。 Dim rs As DAO.Recordset Dim cd As String, i As Integer Set rs = CurrentDb.OpenRecordset("SELECT * FROM ランク ORDER BY コード, 期ごと DESC") Do Until rs.EOF   If cd = rs!コード Then     i = i + 1   Else     i = 1     cd = rs!コード   End If   rs.Edit   rs!順位 = i   rs.Update   rs.MoveNext Loop rs.Close Set rs = Nothing

nk1800705
質問者

お礼

ごれんらくが遅くなりました。 見事に出来ました、ありがとうございます。訂正までしていただいてほんとうに助かりました。

その他の回答 (1)

回答No.1

DAOを使用する例 DAOに参照設定が必須 数値型の「順位」フィールドを追加 Dim rs As DAO.Recordset Dim cd As String, i As Integer Set rs = CurrentDB.OpenRecordset("SELECT * FROM ランク ORDER BY コード, Left(期ごと,4), Mid(期ごと,5)='上期'" Do rs.EOF   If cd = rs!コード Then     i = i + 1   Else     i = 1     cd = rs!コード   End If   rs.Edit   rs!順位 = 1   rs.Update   rs.MoveNext Loop rs.Close Set rs = Nothing テーブルデータに変更があったときに上記のコードを実行します。

関連するQ&A