過去の桐井戸端BBS (桐ver.8)
11838 同一レコードの各項目間で順位付けをしたい Ail 2001/06/24-17:19
レコード間の順位をつける場合には関数があると思うのですが、
同一レコードの各項目間の数値データを比較して順位をつける関数ってあるのでしょうか?
例えば、
[A][B][C][D][E]という5つの項目があるとして各レコードにおいて[E]項目に、
[A]〜[D]の中の一番数値が多いものと一番少ないものを比較の差を求める。
また、[A]〜[D]のデータの数値の高い順番を[E]に計算入力する。
例えばあるレコードの[E]には"DBAC"、また別のレコードには"BACD"というデータを計算入力させる。
そのような処理はどのようにしたらよいのでしょうか。
 最終的には一つ一つのレコードの[DBAC]のようなパターンを分析して、
各パターンの出現数を比較するような作業をしたいのですが。

 単純な内容ですのでたぶんごく基本的な計算や関数で実現可能なことだと思うのですが、
よくわからないものですから教えてください。

11842 Re:同一レコードの各項目間の順位付けは? 【多遊】 2001/06/24-21:21
記事番号11838へのコメント

>レコード間の順位をつける場合には関数があると思うのですが、同一レコードの各
>項目間の数値データを比較して順位をつける関数ってあるのでしょうか?
>例えば、
>[A][B][C][D][E]という5つの項目があるとして各レコードにおいて[E]項目に、
>[A]〜[D]の中の一番数値が多いものと一番少ないものを比較の差を求める。
>また、[A]〜[D]のデータの数値の高い順番を[E]に計算入力する。例えばあるレコ
>ードの[E]には"DBAC"、また別のレコードには"BACD"というデータを計算入力させ

[E]には、

>[A]〜[D]の中の一番数値が多いものと一番少ないものを比較の差を求める
>[E]には"DBAC"、また別のレコードには"BACD"というデータを計算入力させる。
いったいどちらをお望みですか?

質問が重複してるような気がしますが、一応[A]〜[D]まで、数値、[E]は文字列として順位の項目を求める式を紹介いたします。

項目間の順位を求める計算式

#計算(#代入(&STR,""),
  #代入(&STR,#S(&STR,5-(([A]>=[A])+([A]=>[B])+([A]>=[C])+([A]>=[D])),"A")),
  #代入(&STR,#S(&STR,5-(([B]> [A])+([B]=>[B])+([B]>=[C])+([B]>=[D])),"B")),
  #代入(&STR,#S(&STR,5-(([C]> [A])+([C] >[B])+([C]>=[C])+([C]>=[D])),"C")),
  #代入(&STR,#S(&STR,5-(([D]> [A])+([D] >[B])+([D] >[C])+([D]>=[D])),"D"))
  )

注意:
  上記は[E]に、設定する計算式です。
  対応文字列形式ですので、途中に","コンマが入ってます。
  コンマを除くためには、最後に、#代入(&STR,#S(&STR,",","") を、追加下さい

> 単純な内容ですのでたぶんごく基本的な計算や関数で実現可能なことだと思うの

もっと単純な計算式があるかも知れませんが、とりあえず答えを導くまでの式です
※これは、いかすぱげてぃさん案を、改変・紹介です


11849 Re:同一レコードの各項目間の順位付けは? Ail 2001/06/25-07:05
記事番号11842へのコメント
ありがとうございます。
最初は何でこんなふうに計算されるんだろう、と思ったのですが桐Ver5のマニュアルを何回も読み直してみて「なるほど」と思いました。
(マニュアルはVer5のものが一番詳しくて分かりやすいので)
ここから応用していけば、各項目の最大値と2番目の値の差といったことも簡単に求めることが出来そうですね。

戻る