• 締切済み

ファイルメーカーのCase関数で

すみません。教えて下さい。 Case関数を使って、数値管理をしたいのですが、 フィールドAが260以上ならA フィールドAが220以下ならC フィールドAが220より大きく260より少くなく、かつフィールドBが+ならB1、フィールドBが-ならB2というものを書きたいのですが、どのようにすればいいでしょうか? みなさんお教え下さい。

みんなの回答

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.12

>>異常がある場合は高度>軽度>正常 これは既に承知しています。 お聞きしたいのは 高度>軽度>基準値より低い>正常 ですかということです。

tatsuo78
質問者

お礼

みなさんありがとうございました。 とりあえず、この質問は閉じます。 改めて再度作成させていただきます。

tatsuo78
質問者

補足

高度>軽度>基準値より低い>正常 ベストです。 すみません。

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.11

優先順位がちょっと不明な部分があります。 例えばa、bとも正常でcが低い場合は「低い」が優先されるのですよね? Case ( a ≧ 100 or b ≧ 100 or c ≧ 100;"高"; (a > 38 or b > 44) or (性別="男" and c > 84) or (性別 = "女" and c > 48);"軽";(a < 7 or b < 3) or (性別="男" and c < 9) or (性別="女" and c < 7);"低";"正常") これじゃダメですか?

tatsuo78
質問者

補足

優先順位は、例えば Aが高度 Bが軽度 Cが正常となった場合 一番優先したいのは高度異常を優先したいのです。 また、 Aが正常 Bが軽度 Cが正常 となった場合は軽度異常を優先したいのです。 異常がある場合は高度>軽度>正常 という風にしたいのですが、難しいですか?

noname#86065
noname#86065
回答No.10

一番最初の Case( (フィールドA > 100 or フィールドB > 100 or フィールドC > 100) , "高度異常", というところがそこに当てはまると思うのですがうまくいきませんか? IDにメール登録しておりますので差し支えなければご連絡ください。mail goo ne jpです。

tatsuo78
質問者

補足

ありがとうございます。 改めてメールはしますがとりあえずここでも報告をと思いまして。 ちょっと立てこんでまして、何も進んでません。 また連絡させて頂きます。

noname#86065
noname#86065
回答No.9

ちょっとお仕事でセキはずしてしまいました。 大丈夫でしたか? 高度異常・軽度異常が重なった場合は高度異常を優先させるということはどういうことでしょう? どれかのフィールドが100を超える場合は高度異常 どのフィールドも100を超えず、かつ正常値よりも数値が高い場合を軽度としているのですが、 ご面倒でなかったら補足お願い致します。

tatsuo78
質問者

補足

お返事遅くなりまして申し訳ありません。 Aが軽度 Bが高度 Cが正常 としたら高度異常を表示させるようにするにはどうしたらいいでしょうか? やっかいですか?

noname#86065
noname#86065
回答No.8

ややこしいですが、case関数に関して落ち着いて考えるとわかるかと思います。 ちなみに、andは「かつ」、orは「または」です。 Case( 性別 = "男" , Case( (フィールドA > 100 or フィールドB > 100 or フィールドC > 100) , "高度異常", ((フィールドA < 100 and フィールドB < 100 and フィールドC < 100) and ( フィールドA > 38 or フィールドB > 44 or フィールドC > 84)),"軽度異常"), 性別 ="女",Case( (フィールドA > 100 or フィールドB > 100 or フィールドC > 100) , "高度異常", ((フィールドA < 100 and フィールドB < 100 and フィールドC < 100) and ( フィールドA > 38 or フィールドB > 44 or フィールドC > 48)),"軽度異常" )) でとりあえずいきそうですが、もっとスマートになりそうです。もうちょっと時間を。 これには正常値以下が入っておりません。 正常値以下と表示させるのはフィールドCの値単独で判断して良いですか? (AやBが100を超える場合や、軽度異常の場合は??)

tatsuo78
質問者

補足

なるほど、なるほどできました。ただ欲を言えば、高度異常・軽度異常が重なった場合は高度異常を優先させるようなことはできますか?

noname#86065
noname#86065
回答No.7

何となく見えてきました。 ということは、 仮にフィールド男・フィールド女としたときには どちらかが空欄になると言うことでしょうか。 また、フィールド男・フィールド女とするよりは、 空欄をなくすために性別のフィールドを作成し、 性別が「M」「F」のときには~みたいな条件文でも 可ですかね?

tatsuo78
質問者

補足

そうですね。条件文でも全く問題なしです。 いけそうですか?今もあれこれやってますがややこしくなる一方です。。。

noname#86065
noname#86065
回答No.6

とりあえずは良かったですね。 次の壁は少々大変そうですので、整理しましょう。 まず、わからない点が。。。 フィールドC N10~84 G8~48というのがわかりません。 「N」「G」? また、数値が2つある場合には フィールドC N10~84 フィールドD G8~48にしたほうが良いのですが。 この場合、「N」「G」を含むことによってテキストフィールドか数字フィールドか 決めかねてしまいます。 99以下の異常値は軽度異常と表示させたいとのことですが、 たとえばフィールドAの正常値は8~38で、 100以上は高度異常 39<フィールドA<100は軽度異常 フィールドA<8も軽度異常ということでしょうか?

tatsuo78
質問者

補足

すみません。補足不足でした フィールドC N10~84 G8~48というのは、 N=男 G=女 で、この男と女は別フィールドで入力するようにして、 男の場合10~84 女の場合8~48が正常値で 男の場合84~99 女の場合48~99が軽度異常 男女とも100以上が高度異常ということになります。 逆に男の場合10以下 女の場合48以下は基準値より低いという表示もしたいですね。まあややこしくなってきました。今必死になってます。

noname#86065
noname#86065
回答No.5

Case( フィールドA >= 260 , "260以上" ,フィールドA < 220 , "220以下", Case( フィールドB >0 , "B1" ,フィールドB < 0 , "B2")) こんな感じですかね。 =+という表記はしないです。正であれば>0,負であれば<0となります。 また、区切りはセミコロン;ではなく、コンマ,になのですが、新しいバージョンはセミコロン? あとは、「""」は文字扱いの記号なので"220以下";""←ここがちょっと変ですね。 あとはNO4でcockerelさんが回答してくれたように、 case関数の3番目の条件で、B>0のとき"B1"、それ以外の場合はデフォルト値"B2"となります。 ですが、この場合、0(null)の設定を明確にしないと、正しく表示されないかもしれません。 私もファイルメーカーは仕事でよく使っております。 いろんな計算式を作っていくとすぐになれますよ。 私も勉強になりますので、わからないところは納得のいくまでご質問ください。

tatsuo78
質問者

補足

この件についてはうまく表示されるようになりました。感動しております。ありがとうございました。しかし、また壁にぶちあたっています。        ↓正常値 フィールドA 8~38 フィールドB 4~44 フィールドC N10~84 G8~48 フィールドDにA・B・Cいずれかの数値が100以上なら高度異常 フィールドDにA・B・Cいずれかの数値が99以下の異常値な ら軽度異常と表示させたいのです。 まず、高度異常を書き、その後、軽度異常以下を書き、その後それ以外を書きましたが、うまく表示されません。 上記例でCase文を記入して頂けますか?

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.4

フィールドAが260以上なら"A" フィールドAが220以下なら"C"  上記以外でフィールドBが『正』なら"B+"  上記以外でフィールドBが『負』なら"B-" という意味に解釈しました。 "A"、"C"、"B+"、"B-"が、フィールドの名前と間違えやすいので、それぞれ『あ』『う』『い+』および『い-』として: Case ( A ≧ 260 ; "あ" ; A ≦ 220 ; "う" ; B ≧ 0 ; "い+" ; "い-" ) でよいと思います。Case関数は頭から条件を当て嵌めるので、3番目の条件は自動的に『上記以外』になります。最後はすべての条件に当てはまらないデフォルト値です。 なお、『あ』『う』にA、Cのフィールドの値を用いる場合には""を外して対応するフィールドの名前を使用します。 -とか+は使ってはダメなのでしょうか? 文字として使用する場合には、""で囲みます。正/負の意味であれば、上記のように0より大きい(小さい)を使用して式で表します。

noname#86065
noname#86065
回答No.3

説明下手で申し訳ありません。 本来は下記のような形にするとわかりやすいですかね。 Case( A >= 260 , "260以上" ,A <= 220 , "220以下", "260と220の間") この式は、 case1→A >= 260 ならばtextは "260以上" case2→A <= 220 ならばtextは "220以下" case3→どちらにも当てはまらないときはデフォルト値"260と220の間" としています。 case3のところに、新たに条件式↓ Case( B >0 , "B_0以上" ,B < 0 , "B_0以下") ↑正か負なのでデフォルト値の設定なし にしています。 それ以外の場合(260>A>220)の時に、Bが+ならB_0以上・-ならB_0以下という場合の計算式はどうなりますか? どうも、260>A>220がわかりません。 というのはcase3に当てはまります。

tatsuo78
質問者

補足

たぶん私の書き方がまずかったのもしれません。 フィールドAが260以上なら”260以上” フィールドBが220以下なら”220以下” どちらも当てはまらず、かつ、フィールドBの値が+ならB1 どちらも当てはまらず、かつ、フィールドBの値が-ならB2 にしたいのです。 Case (フィールドA>= 260;"260以上";フィールドA< 220 ;"220以下";"";Case (フィールドB = +;"B1";フィールドB = -;"B2")) ではダメでした。-とか+は使ってはダメなのでしょうか?それとも、そもそも計算式がダメでしょうか? すみません。宜しくお願い致します。

関連するQ&A

  • ファイルメーカーでCaseの式がうまくいきません

    ファイルメーカーで以下の式が上手くいきません。似たような他の式は上手くいっているので、どこが悪いのかわからないので教えてください。フィールドAにどの数字を入れてもフィールドBの結果は40になってしまいます。 フィールドA 数字 フィールドB 計算 フィールドAが1以上2未満の場合 10 フィールドAが2以上3未満の場合 20 フィールドAが3以上4未満の場合 30 フィールドAが4以上5未満の場合 40 その他の場合 空白 フィールドB= Case(4<フィールドA<=5,40,3<フィールドA<=4,30,2<フィールドA<=3,20,1<フィールドA<=2,10, "")

  • CASEっていう関数について

     あるセルの値が「A」ならその横のセルに3、「B」なら4、「C」なら5と表示されるようにしたいんです。ネットで調べてたら、そんなときは「CASE」っていう関数が当てはまるみたいなので、試したのですが、fxをクリックしてすべての関数を表示しても、「CASE」が見当たらないんです。ほかになんかいい関数がありますでしょうか? どなたか助けて下さい。

  • ファイルメーカーの関数

    ファイルメーカーPro Ver7を使用しています。 もしかしたらとても簡単なことかもしれませんが とても悩んでいるので宜しくお願いいたします。 テキストフィールドA(例:愛知県)とテキストフィールドB (例:名古屋市)を併せたものをテキストフィールドC(愛知県名古屋市) に返すにはどうすればよいのでしょうか。素人考えでCフィールドを 計算式A+Bとしたら0になりました。

  • ファイルメーカ Case("テキスト”)

    テーブル「TB2」~~~~~~ フィールド「生年月日」---数字 フィールド「目的日」-----数字 フィールド「年齢」-------計算--------計算、「目的日」-「生年月日」 フィールド「B」----------計算--------非保存、= Case(年齢=1 or 年齢=5 or 年齢=8;1) これで正常にフィールド「B」は目的とするレコードのみ「1」になりました。(それ以外は「空」) ここにテーブル「TB1」があって~~~~~~ フィールド「A」---------テキスト-----グローバル テーブル「TB2」のフィールド「B」の「年齢=1 or 年齢=5 or 年齢=8」の部分を フィールド「B」---------計算---------非保存、= Case(テーブル「TB1」;;フィールド「A」;1) に変更しました。 結果、テーブル「TB2」のフィールド「B」は全て「1」になってしまいます。 どのようにしたら、条件にあったものだけ「1」にできるでしょうか?

  • ファイルメーカーの関数

    ファイルメーカーPro7を使用しています。例えばA,Bという2つのフィールドを作成し、Aにデータ(値一覧に定義されているデーター)を入力したらBに決まったデータ(例:より発送)と返す関数若しくは違う設定はあるのでしょうか。宜しくお願い致します。

    • ベストアンサー
    • Mac
  • 関数を教えてください(再質問・誤りがありました)

    先ほどの質問で誤りがありましたので再度質問します。 A1にある数値が入っています。 B1にも数値が入っています。 A1が100000以下なら B1の数値の2割引した数値を、 A1が200000以下なら B1の数値の5割引した数値を、 A1が500000以下なら B1の数値の7割引した数値を、 C1に表示するという関数を教えてください。 よろしくお願いします。

  • AVERAGEIFS関数について

    どなたか、お尋ねいたします。 AVERAGEIFS関数でA1~E1のセルに示した数値 A1  B1    C1  D1  E1 9  20   21  22  31 二つの条件 10以下、30以上の数値を除く平均値 20、21、22   答え21.0 ただし、10と30は別の計算式から求めた値とします。 実際は20程の数値から以下、以上を除いた平均値を計算したいと思っています。 AVERAGEIFSで計算式の書き方を教えていただけませんか。 他の方法でも可能なら結構ですので、よろしくお願いします。

  • ファイルメーカーについて

    ファイルメーカーPro7を使用しています。 現在CD管理表を作成しており、1つのレコードにアーティスト,タイトル の2つのフィールドを作りリスト形式で表示しています。 例 アーティスト,タイトル A ,あ B , い C ,う A ,え A,お 検索をしてアーティストAの該当数(3枚) と総タイトル数(5 枚) を表示したいのですがどのような関数もしくは 方法がありますか。 宜しくお願い致します。

  • ファイルメーカー5.5でcaseでフィールド表示

    いつもすみません。 Case関数を使用して、例えばフィールド(1)が○ならフィールド(2)の数字を表示させるをしたいのですが、=フィールド(2)にしてもフィールド(2)名がそのまま表示されてしまいます 初心者ですみません

  • <ファイルメーカー>フィールドの定義の計算式(関数)について

    ファイルメーカーで顧客管理をしています。 伝票作成をするにあたり、15桁の番号の自動入力が出来ず困っています。 以下の5つの各フィールドの数値を 一つのフィールドにまとめたい (115555556666662と自動入力させたい)のですが、 そのまとめる計算式を教えて下さい。 1桁目:「1」 2桁目:「1」 3~8桁目:シリアルNo.(例えば555555) 9~14桁目:顧客番号(例えば666666) 15桁目:「2」 初心者で関数についての知識がなく、困っております。 回答宜しくお願いします。 環境: ファイルメーカー5.5 Mac OS 9.2