過去の桐井戸端BBS (桐ver.9)
18278 ファイルをまたいで転置集計をしたい 高須正 2002/12/19-15:45
仕事で次のようなファイルを市区町村別に扱っています。
(実際はもっと複雑なんですけど簡単に表現してます。)

都道府県名  市区町村名  氏名    性別  入会年度
○○県     ○○市    山田太郎  男    2000
○○県     ○○市    山田花子  女    2001


転置集計で市区町村別のファイルごとに入会年度の集計を取っていますが、
すべてのファイルの転置集計結果が必要なときに、1つずつ転置集計していくことが面倒でなりません。

都道府県名  市区町村名  2000  2001  件数
○○県      ○○市     1    1     2

のような集計結果がすべて1つのファイルに書き出されるような一括処理はどのように書けばよいでしょうか?
過去に、複数のファイルに対して一括でデータ行を求める処理、みたいなものを拝見したことはあるのですが、
私の場合はどのようにしたらよいでしょうか?

なお1つのファイル内に異なる都道府県名、市区町村名が入っていることはありません。

よろしくお願いします。

18281 Re:ファイルを跨いだ集計の取り方 野良犬 2002/12/19-18:41
記事番号18278へのコメント
こんばんは。

>なお1つのファイル内に異なる都道府県名、市区町村名が入っていることはありませ
>ん。

それが問題のように思います。
最初から1つのファイルにすべてのデータを入れておけば一発でできますから。

事情があり、1つにできないのなら、一括処理を書くしかないですが、その前に、
対象のファイルを見つけ出す方法を考える必要があります。
・すべて同じフォルダにあるのか
・同じフォルダに違う種類の表もあるか
・対象のファイルに命名規則があるか
・あるいはそれ以外の特徴

などなど。

18289 Re:ファイルを跨いだ集計の取り方 高須正 2002/12/20-09:56
記事番号18281へのコメント
早速レス頂きましてありがとうございます。

>事情があり、1つにできないのなら、一括処理を書くしかないですが、その前に、
>対象のファイルを見つけ出す方法を考える必要があります。

この件なのですが、事情がありまして1つにしておりません。

>・すべて同じフォルダにあるのか
>・同じフォルダに違う種類の表もあるか
>・対象のファイルに命名規則があるか
>・あるいはそれ以外の特徴

すべて同じフォルダにあり、違う種類の表はありません。
命名規則は無くて、それ以外の特徴はありません。

よろしくお願いします。
18292 Re:ファイルを跨いだ集計の取り方 たゆー 2002/12/20-18:25
記事番号18289へのコメント
高須正さん

質問の追加です
>>・すべて同じフォルダにあるのか
>>・同じフォルダに違う種類の表もあるか
>>・対象のファイルに命名規則があるか
>>・あるいはそれ以外の特徴
>
>すべて同じフォルダにあり、違う種類の表はありません。命名規則は無くて、
>それ以外の特徴はありません。

・集計結果は、どうされますか(別の表に保存するとか)
 そして、この表も同じフォルダーにはない。つまりデータはデータだけの専用フォルダにある。と解釈していいわけですね

そして最初のご質問のように
>のような集計結果がすべて1つのファイルに書き出されるような一括処理はどのよう
>に書けばよいでしょうか?

上記のお答えによっても一括処理の書き方は多少変わりますが・・・

・仮に一つの表でしたら履歴等を利用して転地集計から書き出し(保存まで)作成可能でしょうか。
・ファイル検索等関数の利用はご存知でしょうか
・繰り返し等を利用して、ファイル検索が終了するまでループさす書き方はご存知ですか

もし以上がご存知でしたら、参考程度にご紹介させていただきます。
一括処理で完全に動くものをご希望でしたら参照程度にご覧ください


転置集計結果を保存する表を開く
*必要なら、表整理・圧縮
繰り返し
 #ファイル検索・・・を使用
    ファイル検索が未定義になら繰り返し中止
 対照表を開く
 転置集計を行う
 集計結果を保存する
 (今回の保存は集計表から読み込んでもいいですね)
 集計結果を破棄終了
 対象表を破棄終了
繰り返し終了
表形式編集

このような感じでしょうか。一行一行はとくに難しくありません
ぜひ挑戦してみてください。

なお、表の移動がめんどうでしたら、転置集計結果を保存する為に、
書き出しでも行えますので、そちらもお試しください。

ただし集計表を新規に作成以外でしたら、事前に表整理等もお忘れなく

18294 Re:ファイルを跨いだ集計の取り方 悲しげ 2002/12/20-23:26
記事番号18289へのコメント
どもっ、高須さん

http://www.fuku3.com/~habata/kbbs/kakov8/17818.htm
の中に次のような記述があります。
いわく

>先ずフォルダ内の全部の(必要な)表データをひとつの別表に読みこんで、
>次の段階で別表を使って転置などに展開する、という方法が考えられます。

参考になるかどうか判りませんけど、一応。

#18289>事情がありまして1つにしておりません。
#18278>すべてのファイルの転置集計結果が必要なときに、

読み込む「ひとつの別表」は、必要な時だけの作業表と考えることもできます。

18385 表の持ち方と複数表の転置集計 佐田 守弘 2003/01/04-15:53
記事番号18278へのコメント
高須正さん
年越しの亀レスですが、コメントさせて頂きます。
●表は本来1つで持つべき
既に野良犬さんも掛れている通り、この処理を行うには、1つの表にまとめておく事が原則です。
 >事情がありまして1つにしておりません。
との事ですが、差し支えなければその事情をお知らせ頂けませんでしょうか。
根本的な解決策はこのあたりに潜んでいると思います。

参考までに私がそれらしき事情を想定し、対策を考えてみます。
@地区別に管理している名簿なので本部で1つにまとめる事が不可能
一番考えられるのは、これでしょうね。
この場合には、地区別名簿の入力編集は地区で行うとしても、本部では
それらをマージした集計名簿を作っておき、それで管理すべきでしょう。
具体適法法は後で述べます。
Aファイルサイズが500MBの限界をこえる
ちょっと考えられないのですが、そうであるなら致し方ありません。
B複数のオペレータに入力させるため表を分けている
分ける事はナンセンスです。LANで共有して入力すべきでしょう。

●副数表の転置集計の方法
2つの方法があります。
1つ目は先に表をマージして1つの表にしてから転置集計する方法です。
ワーク表を作り、ここに個別の表を順次読み込みます。
前述の本部がまとめる集計名簿に相当するものができます。
2つ目は、個別の表を転置集計してから、ワークの転置集計表に順次書き出して行く方法です。
集計項目が重複していないのであれば、この方法でも可能かと思います。

●複数の表を順次処理する方法
どうしても複数表に分けるなら、攻めて命名ルールを作る事が最低限の原則
になるでしょう。それも不可としたら、次の様な方法で処理して下さい。
(a)表の一覧を作る
「表リスト.tbl」の様な表を作っておき、ここに処理する表ファイル名を
書き込んでおきます。そしてこの表を開き、順次表ファイル名を取り出して、
それぞれの表を処理します。
MS-DOSコマンドで、
 dir *.tbl /b >tbllist.txt
を実行すれば、ファイルの一覧がテキストに書き出せます。
これを読み込めば表の一覧表が簡単に作れます。
桐のコマンドでバッチファイルを書き出し、表への読み込みまで行う事も可能でしょう。

(b)「#ファイル検索」関数を使う
繰り返しコマンドとこの関数を組み合わせてやれば、表ファイルを順次探して処理する事は可能です。

佐田守弘(KS-00119)

戻る