2番目に大きな値の抽出について
[戻る]
みやまさ
[E-Mail]
1999/04/27(火) 21:42:41
はじめまして、みやまさと申します。
いくつかの値の中から、一番大きな値を抽出するには、関数のMAXを使えばよいのですが、2番目に大きな値を抽出するにはどうすればよいのでしょうか。
仕方がないので、今はエクセルで処理をしてから、ファイルメーカーにデータを移しています。
良い方法がありましたらアドバイスをお願いいたします。
村山清隆
[E-Mail]
1999/04/27(火) 22:05:11
こんばんは、みやまさ さん 村山@米沢です。
: 仕事でファイルメーカーを使っているのですが、「いくつかの値の中から二番目に大きな値を抽出」
したいのですが、どのようにしたらよいかわかりません。
ちょっと確認させてください。
普通のフィールドのデータで、該当レコード内で二番目に大きな値ですか?
それとも、
繰り返しフィールド内で二番目に大きな値ですか?
教えていただけますか!
# ところで、みやまさ さん このご質問は「ファイルメーカーで計算機」に関係ありますか?
# もし、新規の投稿でしたら引越したいのですが.....お返事お待ちしております。
それでは、失礼いたします。
みやまさ(引越し作業は村山がしました。)
[E-Mail]
1999/04/27(火) 22:08:33
村山@米沢さん、こんにちは。
>普通のフィールドのデータで、該当レコード内で二番目に大きな値ですか?
>それとも、
>繰り返しフィールド内で二番目に大きな値ですか?
説明不足ですみませんでした。
私の場合は、前者の普通のフィールドデータ内でのものです。
# ところで、みやまさ さん このご質問は「ファイルメーカーで計算機」に関係ありますか?
# もし、新規の投稿でしたら引越したいのですが.....お返事お待ちしております。
またまたすみません。
全く新規の投稿なので適当なところへ引っ越しさせてください。
よろしくお願いいたします。
村山清隆
[E-Mail]
1999/04/27(火) 22:51:02
みやまさ さん こんばんは、村山@米沢です。
普通フィールドがA、B、C という名前であるとします。
1番目に大きな値を算出するためのフィールドを 1番目MAX とします。
2番目に大きな値を算出するためのフィールドを 2番目MAX とします。
1番目MAX(計算)= Max(A,B,C)
2番目MAX(計算)= Max((A<>1番目MAX)*A,(B<>1番目MAX)*B,(C<>1番目MAX)*C))
これで2番目に大きな値が算出出来ると思います。
お試し下さい。
それでは、失礼いたします。
村山清隆
[E-Mail]
1999/04/27(木) 23:58:02
みやまさ さん こんばんは、村山@米沢です。
2番目MAXの計算式の括弧 ")" が1つ多かったです。すみません訂正いたします。
(誤): 2番目MAX(計算)= Max((A<>1番目MAX)*A,(B<>1番目MAX)*B,(C<>1番目MAX)*C))
(正)2番目MAX(計算)= Max((A<>1番目MAX)*A,(B<>1番目MAX)*B,(C<>1番目MAX)*C)
それでは、失礼いたします。
村山清隆
[E-Mail]
1999/04/28(金) 07:19:01
みやまさ さん おはようございます。村山@米沢です。
: これで2番目に大きな値が算出出来ると思います。
この式を利用するにあたり説明不足の点がありました。
2番目の値をさがす必要がある各フィールド(例ではA,B,C)の値は全て正の値であることが条件になります。
A=5
B=7
C=2
など、
正と負の間をまたぐ数値群、または、負のみの数値群の場合は正確に算出出来ません。
A=4
B=-2
C=-7
などは、
-2が正解なわけですが、結果は0になってしまいます。
以上の注意点を考慮して利用する必要があります。
それでは、失礼いたします。
みやまさ
[E-Mail]
1999/04/28(水) 21:45:29
村山@米沢さん、アドバイスどうもありがとうございました。
そこで、もう少し教えていただきたいのですが・・・
実は私の書き方がよくなかったのですが、私が行いたかったのは、例えば対象となる各フィールドが「3」「3」「1」という三つの数の場合、一番大きな値として「3」、二番目に大きな値として「3」が選ばれるようにしたいのです。
このような場合はいかがでしょうか。
村山清隆
[E-Mail]
1999/05/02(日) 22:14:10
こんばんは、村山@米沢です。
: 例えば対象となる各フィールドが「3」「3」「1」という三つの数の場合、一番大きな値として「3」、二番目に大きな値として「3」が選ばれるようにしたいのです。
ちょっと重たいんですが、フィールド定義だけで作ってみました。
速度的にはスクリプトを書き、確認の都度計算させた方が有効かもしれません。
ちょっと試していただけますか?
入力フィールドは5つと想定して作っています。
2番目の値を算出するフィールドをよく使うレイアウトに配置しますと、もたもたして腹が立ちますので、
別レイアウトを追加され、そこでのご使用をお勧めします。
問題点がありましたら、ご遠慮なくコメントして下さい。(是非みなさんも)
それでは、失礼いたします。
ミニテンプレートのダウンロードはこちらからどうぞ!(lzh形式)
ftp://ftp.kipwmi.com/pub/mac/2ndVal.lzh.hqx 2番目に大きな値.fmj(Mac版)
ftp://ftp.kipwmi.com/pub/win/2ndVal.LZH 2番目に大きな値.fmj(Win版)
みやまさ
[E-Mail]
1999/05/05(水) 13:18:15
村山さん、こんにちは。
さっそく回答していただきありがとうございました。
さっそくテンプレートをダウンロードしましたが、これはかなり複雑ですね。
ということで、ちょっと自分の手には負えそうにないので、しばらくはこれまで通りエクセルとの二本立てで行こうと思います。
どうもありがとうございました。
村山清隆
[E-Mail]
1999/05/05(水) 15:13:55
みやまさ さん こんにちは、村山@米沢です。
私、ちょっとリアルタイムに計算結果を出すことに熱中し過ぎましたが、大事なことを忘れて
いました。
: ということで、ちょっと自分の手には負えそうにないので、しばらくはこれまで通りエクセルとの二本立てで行こうと思います。
エクセルを使っているんですよね!
しまった、だったらスクリプトで処理しても良いんですよね?
それならもっと簡単になりますよ!
もし良かったらコメント下さい。
それでは、失礼いたします。
みやまさ
[E-Mail]
1999/05/07(金) 21:38:37
村山さん、こんにちは。
: エクセルを使っているんですよね!
: しまった、だったらスクリプトで処理しても良いんですよね?
: それならもっと簡単になりますよ!
そうなんですか!
それなら是非教えてください。
よろしくお願いいたします。
土屋@米沢
[E-Mail]
1999/05/13(木) 08:03:18
こんにちは、Tsucchyこと土屋@米沢です。
久しぶり m(_ _)m に会議室をのぞいてみたら充実していてびっくり。
今後はちょくちょく訪れますのでよろしくお願いします。
: 実は私の書き方がよくなかったのですが、私が行いたかったのは、例えば対象となる各フィールドが「3」「3」「1」という三つの数の場合、一番大きな値として「3」、二番目に大きな値として「3」が選ばれるようにしたいのです。
スクリプトで対応するヒント(だけですみませんが)です。
まず、グローバルフィールドを3つ作ります。【一番目】【二番目】【TEMP】
で、スクリプトですが、
◆フィールド1の値を「一番目」にコピー(フィールド設定などで)
◆フィールド2に移動
◆フィールド2の値を「TEMP」にコピー
◆MIN(一番目、TEMP)を「二番目」に貼り付け
◆MAX(一番目、TEMP)を「一番目」に貼り付け
そして以下をループにして最後のフィールドまで繰り返します。
◆次のフィールドに移動
◆そのフィールドの値を「TEMP」にコピー
◆もしも「TEMP」が「二番目」よりも大きければ次の二行を実行
◆MIN(一番目、TEMP)を「二番目」に貼り付け
◆MAX(一番目、TEMP)を「一番目」に貼り付け
(MINの方を先にします)
こんな考え方でいかがでしょう。具体的なスクリプトでなくてすみませんが、
ヒントということでお許しを・・・
村山清隆
[E-Mail]
1999/05/13(木) 17:50:12
こんにちは、
みやまさ さん と Tsucchyこと土屋@米沢 さん(ご無沙汰しておりました。)
「あっそうだ みやまさ さんにスクリプトと使っての解決案をコメントしなきゃ!」と思って
来てみたら。
土屋さん にフォローしていただいた後でした。
土屋さん ありがとうございます。
みやまさ さん、土屋さん 至らない管理者(村山のこと)ですが今後ともよろしくお願いいたします。
それでは、失礼いたします。
みやまさ
[E-Mail]
1999/05/30(日) 20:46:42
村山さん、土屋さん、どうもありがとうございました。
また、わからないことがありましたらよろしくお願いいたします。
追加発言
きっぷみー TwnLounge Ver2.07 改