過去の桐井戸端BBS (桐ver.9)
21953 グループごとに「1」から始まる連番を振りたい norinori 2003/08/21-17:43
レコードにグループごとで「1」から始まる連番を振りたい。
誰か教えてください。グループごとのレコード数はいろいろです。
21960 Re:グループごとで連番を振りたい 佐田 守弘 2003/08/22-01:03
記事番号21953へのコメント
norinoriさん
#順位という関数を使って、項目置換を行います。
まずグループ毎に並べ替えておき、
#順位(<グループ項目名1>,<グループ項目名2>)
で置換を行って下さい。
なお、項目計算式にはこの関数は使えません。

佐田守弘(KS-00119)
21963 Re:グループごとで連番を振りたい norinori 2003/08/22-11:22
記事番号21960へのコメント
TO 佐田さん

アドバイス、ありがとうございました。
ですが、私の説明が悪かったのか、希望する内容とは少し違っていました。
私がやりたいのは、グループごとで「1」から始まる連番を振りたいのです。例えば・・・

 グループAが5レコードなら、1〜5までの連番を付番
 グループBが7レコードなら、1〜7までの連番を付番
 グループCが10レコードなら、1〜10までの連番を付番

ということです。
そして、グループごとのレコード数は決まっていません。
確か、「#MOD(#連番,n)”n”はレコード数」でできたと思うのですが、
これだとレコード数を指定しないとならないのと、「0」から始まる連番になってしまうのです。
私の場合はレコード数が一定ではないので、”n”をどのように指定するのか、
また、この関数ではできないのか、困っています。

教えてください。よろしくお願いします。
21967 Re:グループごとで連番を振りたい 幅田 2003/08/22-18:32
記事番号21963へのコメント
norinoriさん

#条件選択([グループの項目]=#直前値([グループの項目],[グループの項目]),#直前値([連番の項目],0)+1,1,1)

でいかがでしょうか。
21979 Re:グループごとで連番を振りたい 佐田 守弘 2003/08/23-00:22
記事番号21963へのコメント
norinoriさん
そういったグループ毎のレコード数不定の場合に、
グループのレコード数に応じて1から始まる連番を自動で振るのが
「#順位」関数なのですが。

>ですが、私の説明が悪かったのか、希望する内容とは少し違っていました。

どの様に違っておりましたか?私の書いた方法で、きちんと
> グループAが5レコードなら、1〜5までの連番を付番
> グループBが7レコードなら、1〜7までの連番を付番
> グループCが10レコードなら、1〜10までの連番を付番
になるはずです。

#順位関数は、引き数の数が1つであるか複数であるかで、全く異なる挙動をします。

私のコメントには、
 #順位(<グループ項目名1>,<グループ項目名2>)
と書いてありますが、<グループ項目名2>を省略して、
 #順位(<グループ項目名1>)
と書いたのではないでしょうか。

だとしたら確実に、希望する内容と大きく違う結果になります。

佐田守弘(KS-00119)


21980 補足:2番目のグループ項目は 佐田 守弘 2003/08/23-00:24
記事番号21979へのコメント
補足です。
2番目のグループ項目はダミーで良いのですよ。
何でもよいから、適当な項目を指定して下さい。

佐田守弘(KS-00119)
21984 Re:補足:2番目のグループ項目は 今村 誠 2003/08/23-09:42
記事番号21980へのコメント
佐田 守弘さんこんにちは
>2番目のグループ項目はダミーで良いのですよ。
>何でもよいから、適当な項目を指定して下さい。

ダミーは何でも良いわけではないようです。
幅田さんの計算式が紛れが無くて良いのではないでしょうか

21988 Re:補足:2番目のグループ項目は うにん 2003/08/23-13:38
記事番号21984へのコメント
佐田さんが最初に書いた

>まずグループ毎に並べ替えておき、
>#順位(<グループ項目名1>,<グループ項目名2>)
>で置換を行って下さい。

が微妙に誤解を招いたんではないでしょうか。
複数項目を指定した場合最後の項目はグループ項目でなく順位の基準になります。
ですから、グループ内で連番にしたい場合はグループ内で全部違う値になる項目でないといけません。
HELPのサンプルを見るとわかります。
「学年、組ごとに出席番号を振るには、
#順位( [学年] , [組] , [学籍番号] )」みたいな感じでしょうか。

>ダミーは何でも良いわけではないようです。

#順位( [学年] , [組] , [氏名] )
だと、同じ組に同姓同名の人がいると同じ番号になってしまいます。
最初の佐田さんのを見ると
#順位( [学年] , [組] )
とやってしまうのでは?

>幅田さんの計算式が紛れが無くて良いのではないでしょうか

グループが複数項目の場合は、直前値を使うと式が長くなって面倒です。

21989 順位の使い方がわかりました 今村 誠 2003/08/23-14:42
記事番号21988へのコメント
うにんさんこんにちは、詳しい説明ありがとうございました。
>ですから、グループ内で連番にしたい場合はグループ内で全部違う値に
>なる項目でないといけません。
>HELPのサンプルを見るとわかります。
>「学年、組ごとに出席番号を振るには、
>#順位( [学年] , [組] , [学籍番号] )」みたいな感じでしょうか。

項目名がはっきりしていると連想しやすいですね!!
#順位の関数のヘルプには複数項目の例示がなかったので
販売管理の項目を抜き出してみました。

>>幅田さんの計算式が紛れが無くて良いのではないでしょうか
>グループが複数項目の場合は、直前値を使うと式が長くなって面倒です。

関数の意味からすると順位の方が簡単そうですね

21991 Re:補足:2番目のグループ項目は 佐田 守弘 2003/08/24-00:07
記事番号21984へのコメント
今村 誠さん
確かに、仰るとおりです。
2番目の項目に何を指定しても構わないわけではないですね。
要するに、違う値を取る項目でありさえすれば、グループ化とは関係ない
(むしろ関係ない方が良い)という意味で、何でもよいからダミーの項目をと書いてしまいました。

御指摘の通り、1番目のグループ項目より上位にあるグループ項目や、
そのグループ内で同じ値が繰り返す様な項目ではだめです。

佐田守弘(KS-00119)

戻る