- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Access】順位を付けたい)
Accessで順位付けを行いたい場合の方法とは?
このQ&Aのポイント
- Accessで順位付けを行いたい場合、VBAを使用する方法があります。サブクエリを使用する場合は、レコード数が多くなると処理が遅くなる可能性がありますが、VBAを使用することで処理速度を向上させることができます。
- 順位付けを行うためには、ランクを格納するためのテーブルを作成し、「コード」「獲得数」「期ごと」「順位」のフィールドを設定します。次に、VBAコードを使用してテーブル内のデータを処理し、順位を付けます。処理の基準となる条件を指定し、ランクを計算する方法もあります。
- 例えば、「コード」「獲得数」「期ごと」の3つのフィールドを元に、「獲得数」の降順でデータを並べ替え、順位を計算することができます。VBAコード内でループ処理を行い、データの比較を行いながら順位を付けると効率的です。AccessのVBAは初心者でも学びやすいため、試行錯誤しながら順位付けを行うことができます。
- みんなの回答 (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
その他の回答 (1)
- hatena1989
- ベストアンサー率87% (378/433)
回答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 テーブルデータに変更があったときに上記のコードを実行します。
お礼
ごれんらくが遅くなりました。 見事に出来ました、ありがとうございます。訂正までしていただいてほんとうに助かりました。