過去の桐井戸端BBS (桐ver.8)
16414 文字列を数値に変換して計算した場合、データがすべて入っていないと計算してくれない ひろ広島 2002/06/24-14:02
はじめて投稿させていただきます。
桐はVer8sp6を利用しています。
文字列で読みとったデータを数値として計算したいと思って次のように項目式を書いたのですが、計算してくれません。
すべてにデータが入っているときちんと計算してくれるのですが...

A11・・・文字列 半角数字が入る
A21・・・文字列 半角数字が入る
A31・・・文字列 半角数字が入る

A合計・・・整数
項目式・・・#整数(A11)+#整数(A21)+#整数(A31)

としているのですが表示されません。
A11,A21,A31すべてにデータが入っていると合計し、表示されます。
どこか一つでもデータがないと表示されません。

A11とA21とA31は連続していないので#横合計は使えないんです。

どうしてなんでしょうか?みなさんよろしくいお願いします。
16416 Re:表示してくれないんですが ONnoji 2002/06/24-14:30
記事番号16414へのコメント
ひろ広島さん、こんにちは。

次のように変更すると改善するかもしれません。

<変更前>
#整数(A11)+#整数(A21)+#整数(A31)

<変更後>
#未定義値変換( #整数(A11),0 ) + #未定義値変換( #整数(A21),0 ) + #未定義値変換( #整数(A31) ,0 )

外していたらすいません。
16417 Re:表示してくれないんですが jara 2002/06/24-14:33
記事番号16414へのコメント
ひろ広島さん こんにちは

>A合計・・・整数
>項目式・・・#整数(A11)+#整数(A21)+#整数(A31)
>
>としているのですが表示されません。
>A11,A21,A31すべてにデータが入っていると合計し、表示されます。
>どこか一つでもデータがないと表示されません。

表の[ファイル属性]の[未定義項目値処理]の[ゼロ]にチェックを入れてみてはどうでしょう?
私も以前同じようなことでつまりました。
[ゼロ]にして都合が悪ければ項目式を

#COND([A11]=#U,0,1,#整数([A11]))+#COND([A21]=#U,0,1,#整数([A21]))+…
としてみてはどうでしょうか?
16418 初めて知りました jara 2002/06/24-14:50
記事番号16416へのコメント
ONnojiさん こんにちは

><変更前>
>#整数(A11)+#整数(A21)+#整数(A31)
>
><変更後>
>#未定義値変換( #整数(A11),0 ) + #未定義値変換( #整数(A21),0 ) + #
>未定義値変換( #整数(A31) ,0 )

#未定義値変換 なんて関数があったんですね?初めて知りました。
私、今まで何が何でも #COND を使ってました。(お恥ずかしい…)
今度から使わせてもらいます。

この掲示板はとても勉強になりますね、特に私のような桐初心者にとっては。
助けられてばかりです。
16419 ありがとうございました ひろ広島 2002/06/24-16:42
記事番号16416へのコメント
ONnojiさんありがとうございました。

うまくいきました^^)
でも、長年桐を愛用してきて初めて#未定義値変換ってゆう関数を知りました。
よろしければどのような場合に利用するのでしょうか?


16420 ありがとうございました ひろ広島 2002/06/24-16:45
記事番号16417へのコメント
jaraさん、ありがとうございました。


>表の[ファイル属性]の[未定義項目値処理]の[ゼロ]にチェックを入れてみてはどうでしょう?
うまくいきませんでした。

私も長年桐を愛用しているのですが、ONnojiさんが言われる関数は初めて知りました。
また、よろしくお願いします。


16421 Re:ありがとうございました ONnoji 2002/06/24-17:19
記事番号16419へのコメント
ひろ広島さん、こんにちは。

値が未定義の時に、指定した値で代用する。
※別の値で代用するところが#直前値に似てますね。

表の[ファイル属性]の[未定義項目値処理]の[未定義]にチェックを入れてある表の項目計算式に使うと便利だと思います。

この関数はDOS桐(桐V5は確実)のころからありましたよ。(^^ゞ

16423 【補足】未定義値について 佐田 守弘 2002/06/24-22:22
記事番号16414へのコメント
ひろ広島さん
既に答は出ておりますが、未定義値の概念と「#未定義値変換」関数について
多少の補足をさせて頂きます。

●未定義値の意味
桐が扱う値は大きく、文字列と数値系(日時、時間も含む)に別れます。
このうちの文字列については、未定義値はヌル文字列と同じです。
しかし、数値系の場合には、ゼロと未定義値は全く異なります。

ゼロは「0」という値を持ちますが、数値や整数の未定義値は値そのものが
ありません。過去ログに書いてあると思いますが、桐の表ファイルには、
ゼロは0の値が書かれているのに対して、未定義値は何も書かれていません。
何も値を持っていないと言う意味では、文字列のヌルストリングと似ております。

脱線しますが、かの有名な書物「ゼロの発見」にインドでゼロが発見されたと書かれていますね。
それ以前はゼロは値ではなくて、値のない値、つまり未定義値の様に思われていた様ですね。

●どんな場合に未定義値
未定義値をもう少し分かりやすく説明するために、2つの例をあげてみます。

・成績の場合
試験を受けて全く正解がなかった場合が零点(ゼロ)ですが、受験しなかった場合が未定義値に相当します。
受験しなかったのだから零点とみなすか、追試を受けさせるのでまだ成績が決まっていないとするか、どちらかになります。
零点として扱うのが、「#未定義値変換」関数で未定義値を0とする事に相当します。

・株価
取引がなかった日には、株価が付きません。これが未定義値です。
株価の場合には、ゼロ円とするのは不合理なので、未定義値のまま扱われます。

これ以外にも、未定義値は未定義値として扱うか、0として扱うか、
あるいはそれ以外の値として扱うかは、状況次第で様々です。
経時変化を記録する測定値だと、直前値と同じとしたり、前後の合計値をもって
データを補間するなどもあり得ると思います。

●未定義値を加減算すると
上記の説明で分かる通り、未定義値は値がない状態であり、ゼロではありません。
謂わば値が不定の状態です。
ゼロとみなして良い場合もあるかも知れませんが、そうでない場合もあります。
ですから、ある値に未定義値を加減算しようとすると、値が決められなくなり、
結果は未定義値となります。
これは桐のルールだけでなく、数学でも、「1+0÷0は不定」とするのと同じだと考えれば良いでしょう。

●未定義値がある時の処理
未定義値があって、これを計算対象とする時に、未定義値をどの様な値とみなすかを指定するのが、
「#未定義値変換」関数です。多くの場合、0として扱う事が多いのですが、
今までの説明で、必ずしも0とすべきと決まっている訳ではない事がお分かり頂けると思います。

佐田守弘(KS-00119)
16424 Re:【補足】未定義値について hidetake 2002/06/24-23:31
記事番号16423へのコメント
>未定義値

蛇足・・・ (^_^ゞ
本題とはつながらないし,桐の場合はあれだけど・・・ (^_^ゞ

文字列の場合はどうなのか?と言う問題もあります.
#未定義 (&STR=#u) と "" (#STR="") の違いは?

16425 Re:【補足】未定義値について hidetake 2002/06/24-23:42
記事番号16424へのコメント
>#未定義 (&STR=#u) と "" (#STR="") の違いは?

間違い _o_
#未定義 (&STR=#u) と "" (&STR="") の違いは?
でした. (;_;)


16441 感謝 ひろ広島 2002/06/25-17:11
記事番号16414へのコメント
みなさんありがとうございました。

これからも桐を愛用していこうと思います。
まだまだ、分からないことがありますので...
ここで質問をさせて頂こうと思います。

今後もよろしくお願いします。

戻る