条件別に連番を振る方法を教えてください。
お世話になります。
下記の様な条件による連番をふるマクロを組みたいと考えており、
色々考えてたのですがやり方が分からなく困っています。多少複雑だとは思いますが、すみませんが、詳しい方よろしくお願い致します。
内容として、例えばですが野球チームの選手をランク別にあるコーチに割り当てたいとします。
T_コーチマスタ(テーブルA)
ランク コーチ名 担当数MAX
--------------------------------
A 鈴木 2 ←Aランク選手に割り当てたいコーチ
A 橋本 2 ←Aランク選手に割り当てたいコーチ
B 田中 2 ←Bランク選手に割り当てたいコーチ
B 青木 3 ←Bランク選手に割り当てたいコーチ
C 佐藤 2 ←Cランク選手に割り当てたいコーチ
(補足:ランク順に昇順しています)
T_選手マスタ(テーブルB)
ランク 選手名 人数(連番) コーチ名
--------------------------------------------
A 加藤
B 山本
B 渡辺
B 吉田
A 佐々木
A 木村
C 太田
(*得たい結果)
ランク 選手名 担当数(連番) コーチ名
--------------------------------------------
A 加藤 1 鈴木
A 佐々木 2 鈴木
A 木村 1 橋本
B 山本 1 田中
B 渡辺 2 田中
B 吉田 1 青木
※選手ランク(T_選手マスタ)別に、コーチ名と連番を割り当てたいのですが、コーチにも教えられる人数が限られており、担当数MAXまでしか連番をふれません。担当数を超えると次(下)のコーチ(ランク別)に割り当てたいです。担当者MAXがなく一人のコーチが全員分連番をふれればいいのですが・・・。
連番を振るだけのコードだけは分かったのですが、どうすれば上手い具合にできますでしょうか??(SQLで方法がありますか?)
'連番のみのコード
Sub DAO_numbers()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fd As DAO.Field
Dim SQL As String
Dim inCount As Integer
Set db = CurrentDb()
SQL = "SELECT * FROM T_選手マスタ ORDER BY ランク"
Set rs = db.OpenRecordset(SQL, dbOpenDynaset)
Set fd = rs.Fields("人数")
If rs.BOF = False Then
rs.MoveFirst
inCount = 1
Do Until rs.EOF
rs.Edit
fd = inCount
rs.Update
inCount = inCount + 1
rs.MoveNext
Loop
End If
rs.Clone: Set rs = Nothing
db.Close: Set db = Nothing
End Sub
(上記コードは使わないのであれば無視しても構いません。)
以上よろしくお願い致します。
お礼
早速のご回答に感謝いたします。 この講演を聞いた新人達が木村コーチの言葉を胸に秘めて活躍することを願います。 そしてまたその後輩達に受け継いでいくことでしょう ・・・合掌