過去の桐井戸端BBS (桐ver.8)
2826 行集計で縦に文字数を数えたい su 1999/10/3-23:02
下記のような行集計をおこないたいのですが可能でしょうか。
15日から17日までそれぞれ集計すれば可能ですが、一度に集計し表示したいわけで
す。
簡単なことのようにも思えるのですが、どうしてもわかりません。
よろしくお願いします。

氏名  15日 16日 17日
A    ○  ○  ×
B    ×  ○  ×
C    △  ○  ×
D    ○  ×  ○

総計行 ○ 2 ○ 3 ○ 1
    × 1 × 1 × 3
    △ 1 △ 0 △ 0
2828 Re: Hiro 1999/10/4-17:00
記事番号2826へのコメント
こんにちは、suさん。
行集計の方法では次の方法で実現できると思います。
ただ、あまり良い手とはおもえませんが、とりあえず見てください。

氏名  15日 16日 17日 15○ 15△ 15× 16○ 16△ 16× 17○ ・・・
A    ○  ○  × #条件選択([15日]="○",1,1,0)
B    ×  ○  ×    #条件選択([15日]="△",1,1,0)
C    △  ○  × 
D    ○  ×  ○   各項目に上記の計算式を設定します

総計行には、  15日      16日     17日 
      ○#合計([15○]) #合計([16○]) #合計([17○])
      ×#合計([15×]) #合計([16×]) #合計([17×])
      △#合計([15△]) #合計([16△]) #合計([17△])
の計算式を設定します。

これで一応できると思います。
ただ、15日から17日でしたので、まだ、許容範囲?と思いますが、
もっと、多くなると大変ですから、転置集計するしかないのかなぁ?

hiro.
2829 Re: 幅田 1999/10/4-19:38
記事番号2826へのコメント
suさんこんにちは
Hiroさんが一応お答えを出しておられますが、こういうのはいかがでしょう?

No.2821では横に文字数を数えたのですが、こんどは縦に数えればいいわけですね。

まず仮の項目[15日計]、[16日計]、[17日計]を作りそれぞれ項目計算式を
設定しそれぞれの値を順番に連結していきます。

[15日計]の項目計算式
#直前値([15日計],””)+[15日]

[16日計]の項目計算式
#直前値([16日計],””)+[16日]

[17日計]の項目計算式
#直前値([17日計],””)+[17日]

すると下記のような表になります。
氏名  15日 16日 17日 15日計  16日計  17日計
A    ○  ○  ×  ○     ○     ×
B    ×  ○  ×  ○×    ○○    ××
C    △  ○  ×  ○×△   ○○○   ×××
D    ○  ×  ○  ○×△○  ○○○×  ×××○

[15日計]から[17日計]の項目は作業用の項目なので表示しなくてもかまいません。

で、行集計では最後の行で計算された項目値の文字数を数えればいいわけです。

総計の集計行1の
氏名には ○
15日には  #文字数(#項目値([15日計]))−#文字数(#文字置換(#項目値
([15日計]),”○”,””))
16日には  #文字数(#項目値([16日計]))−#文字数(#文字置換(#項目値
([16日計]),”○”,””))
17日には  #文字数(#項目値([17日計]))−#文字数(#文字置換(#項目値
([17日計]),”○”,””))

集計行2の
氏名には ”×”(×のみだと計算式と勘違いしてエラーとなる)
15日には  #文字数(#項目値([15日計]))−#文字数(#文字置換(#項目値
([15日計]),”×”,””))
16日には  #文字数(#項目値([16日計]))−#文字数(#文字置換(#項目値
([16日計]),”×”,””))
17日には  #文字数(#項目値([17日計]))−#文字数(#文字置換(#項目値
([17日計]),”×”,””))

集計行3の
氏名には △
15日には  #文字数(#項目値([15日計]))−#文字数(#文字置換(#項目値
([15日計]),”△”,””))
16日には  #文字数(#項目値([16日計]))−#文字数(#文字置換(#項目値
([16日計]),”△”,””))
17日には  #文字数(#項目値([17日計]))−#文字数(#文字置換(#項目値
([17日計]),”△”,””))

というぐあいにすると

氏名  15日 16日 17日
A    ○  ○  ×
B    ×  ○  ×
C    △  ○  ×
D    ○  ×  ○

○    2  3  1
×    1  1  3
△    1  0  0

となりますけど、いかがでしょう?
これもちょっとめんどうですかね?
2831 Re: su 1999/10/5-12:02
記事番号2829へのコメント
幅田さん、Hiroさんありがとうございます。
私も 15○ 15△ 15× 16○ 16△ 16× 17○ ・・・
のように計算項目を作ってみたのですが、やたら項目が多く、表にしたときの見栄えも今ひとつで
したので、何か手はないかと思ったわけです。

2822の幅田さんの回答を読みましたが、どうしても縦集計に置き換える頭がなかったので、重複
する質問かとも思ったのですがあえて質問させていただきました。
おかげさまで私の意図している表ができ、大感激です。
もっと頭が柔軟にして、発想の転換を図っていかなければなりませんね。
特に、集計行に、他の項目の計算値を入れることができると言うことが頭の中から抜け落ちていま
した。
これだと計算項目のダミーは見せることもなくすっきりとします。

実際の使用では、○×の途中変更がありますから、再計算をさせた後、行集計をするように履歴に
登録しました。

ところで、これは余談なのですが、氏名項目を例えば、”住所.tbl”を使って、結合表とした場合
に、ダミーの計算項目を作り、所属対象表を計算項目とし、そこに計算式を入れると、「計算式に
自分自身を指定できません。」
となって、計算式が成立しません。
結合表では無理なのでしょうか。
お時間があるときで結構です。
もしわかればお願いいたします。
2868 Re: natsu 1999/10/8-12:15
記事番号2829へのコメント
行集計の変法

私もこの様な処理の必要があって、一括処理をつくろうかなと思っていましたが
この方法なら一括処理は組まなくても大丈夫ですね
さて、幅田さんの方法の変法を考えました

さて、やはり1日あたり一つのダミー項目は必要です
[15日]に対して[15日処理]とします
ここで[15日処理]のデータ型は数値にしておきます
[15日処理]は計算項目として #条件選択式で
[15日]が未定義の時は0、○の時は1、△の時は1000
さらに×の時は1000000とします
#条件選択([15日]=#U,0,[15日]=”○”,1,・・・)

もしくは○△×がどの数値に対応するかの表を作っておいて表引きにしておいた方が
計算式の記述は楽です
#表引き([15日],=,”対応表”,[記号],[数値])
対応表.tblは
 [記号]  ,  [数値]
   ○         1 
   △      1000
   ×   1000000

例えば、○が3件 △が1件 ×が2件とすると
[15日処理]の総計(#合計)は 2001003となります
この数値から○△×の個数が取り出せます
桐の仕様では数値は15桁ですから
○△×は5種類まで増やせるはずです(それぞれの件数は999件まで)

桐の仕様やレコード数などによって制限がありますが
あらかじめ他の総計行でエラーチェックをかけていれば
2000年問題のような思いがけないエラーにはならないと思います

戻る