過去の桐井戸端BBS (桐ver.8)
17818 指定したフォルダ内の全部のtblをまとめて集計したい みほの 2002/10/31-16:18
皆さん、こんにちは。桐ver.8SP6を使っています。
下記のような事例が発生しておりまして、どなたかお知恵を拝借できないでしょうか。
----------------------------------------------------------------------
下記のような.tblがあった場合、

北海道.tbl

都道府県 年度 金額
北海道   2000 1000
北海道   2000 2000
北海道   2001 3000
北海道   2002 4000

転置集計にて次のような集計結果を求めています。

都道府県 2000 2001 2002 件数
北海道    2    1    1    4

各都道府県名の付いた.tblが100近くあるのですが、1つづつ開いて集計結果を求めるのではなく、
フォルダを指定することで、フォルダ内の全ての.tblの集計結果を表示させる方法はありますか?

都道府県  2000 2001 2002 件数
北海道     2    1    1     4
東京都     4    2    5    11
福岡県     1    3    6    10

のような感じで、別の.tblに書き出してくれる形がベストなのですが。
----------------------------------------------------------------------
どうかよろしくお願い致します。
17823 Re:フォルダ内の全.tblの集計結果 悲しげ 2002/10/31-23:12
記事番号17818へのコメント
どもっ、みほのさん
先ずフォルダ内の全部の(必要な)表データをひとつの別表に読みこんで、
次の段階で別表を使って転置などに展開する、という方法が考えられます。

>1つづつ開いて集計結果を求めるのではなくフォルダを指定することで、

と云うことでは一括処理の出番にならざるを得ないと思われます。
ただ

>各都道府県名の付いた.tblが100近くあるのですが、

う〜ん、各都道府県名の付いた表は47(以下)じゃないかとふつうは思うのですが(^^;)、
そうじゃないとすると、どのように名づけられているかが問題となって来そうです。
よって、一番のポイントは(都道府県名のついた)表ファイル名の取得になります。
もし私がやるとすれば次のような感じです。
準備としては、
(1)「ファイル名.tbl」と云う表を用意します。項目として[ファイル名]を。
(2)仮称「全県作業表.tbl」と云う表も。
 この項目は[都道府県][年度][金額]あたりでしょうか?
 これは各フォルダにその都度複写することにします。
-------------------------------------------------------------------
変数宣言 固有,長整数{&error} \
    ,固有,文字列{&ファイル名,&全県元表,&全県作業表,&FILE,&FOLD,&DP}
&DP=#データパス名,&FOLD=&DP \
,&ファイル名=&DP+"ファイル名.tbl",&全県元表=&DP+"全県作業表.tbl"
データパス名 &DP,固定=する
フォルダ名入力 初期値=&FOLD \
 ,プロンプト="調べるフォルダ(サブフォルダ含む)を指定して下さい。<Esc>で中
止。" \
 ,許可作業=なし,&FOLD
条件(&FOLD="") 終了
ファイル削除 "List.txt",終了状態=&実行リターン
ファイル削除 "List-Up.bat",終了状態=&実行リターン
表 &県名表,表番号=1
行削除 *,圧縮
行追加 終了状態=&実行リターン,[ファイル名]="dir "+&FOLD+"*.tbl /s /b >
list.txt"
書き出し テキスト,"List-Up.bat",区切り="009",項目名=しない \
 ,終了状態=&実行リターン,{[ファイル名]}
シェル実行 "List-Up.bat",表示=最大化,&実行リターン
確認 "シェル窓を閉じてから次に進みませう"  /*シェル実行と桐の処理は非同期
なため*/
行削除 *,圧縮
読み込み テキスト,"List.txt",区切り="0009",空白削除=しない,項目名=する \
 ,終了状態=&実行リターン,{[ファイル名]}  /*訳もなく区切りはtabにしてみた
*/
if(#空ファイル)
 確認 "サブフォルダ含めて、表がひとつも無いようです"
 終了
end
-------------------------------------------------------------------
後半へ続く

17824 Re:フォルダ内の全.tblの集計結果 悲しげ 2002/10/31-23:13
記事番号17823へのコメント
後半です
-------------------------------------------------------------------
絞り込み [ファイル名]{&ファイル名}
条件(&選択件数>0) 行削除 *
解除
表形式編集 ガイド="関係ない表は行削除して下さい。終了後、次の処理に進みます。"
/*何らかの法則性があるのなら、検索条件に登録しておく等で利用可*/
&全県作業表=&FOLD+"全県作業表.tbl"
ファイル複写 &全県元表,&全県作業表
表 &全県作業表,表番号=2
編集表 1
行削除 *,圧縮
ジャンプ 行番号=1
エラー処理 手続き=error
繰り返し(.not #EOF)
 &FILE=[ファイル名],&error=0
 if(#LC2(&FILE)<>#LC2(&全県作業表) .and #LC2(&FILE)<>#LC2(&ファイル名))
  編集表 2
  条件(&error<1) 読み込み 表,&ファイル名,終了状態=&実行リターン,*
 end
 編集表 1
 ジャンプ 行番号=+1
繰り返し終了
終了 表 編集対象表 /*この表はファイル名.tbl*/
編集表 2 /*つまり全県作業表*/
並べ替え ・・・・(必要あれば都道府県順?)
転置集計 ・・・・(ここでお好きなように転置展開の中味を)

proc error()
 &error=1
 メッセージボックス "「"+&FILE+"」でエラー発生!" \
  ," 上記ファイル検索過程で何らかのエラーが発生しました!\n" \
  +" エラーの原因は恐らく「変数の未宣言」にあると思われますが、" \
  +"この表をスキップ(検索対象から除外)して次に進むことにします。\n\n" \
  +"   これって反則かも? (^^;) (^^;)" \
  ,アイコン=!,ボタン指定=1,制御文字展開=する,&実行リターン
  /*「アイコン」と「ボタン」は半角カタカナ*/
end
-------------------------------------------------------------------
フォルダを指定して・・の手法、記憶に新しい方も多いかもしれません。(^^;)
あ、「各都道府県名の付いた.tbl」が無いので、動作未確認。
都道府県順の並びをキチンとさせたいなら、都道府県番号の入った別表
(北海道01,青森02,・・・・・鹿児島46,沖縄47)を用意して、#表引き
取得させたもので並び替えると美しいでしょう。

17826 Re:一部訂正 悲しげ 2002/11/01-00:36
記事番号17823へのコメント
No.17823でファイル名が間違ってますね。(^^;)
記述の13行目(下記★印)

 ファイル削除 "List-Up.bat",終了状態=&実行リターン
★表 &県名表,表番号=1
 行削除 *,圧縮

ここは

 表 &ファイル名,表番号=1

ですね。(^^;)
他にもファイル名とか項目名で間違いがあるかもしれません(未確認)。

戻る