過去の桐井戸端BBS (桐ver.9)
23390 転置集計をした表を別の決まった表に読み込んだとき、すべてのデータ(転置後は項目)がないとエラーになる 出井幸三 2003/11/18-18:49
いろいろな先生方が登場されいつも勉強させていただいてます。

転置集計で質問なんですが、

売上台帳.tbl
年、月、日、得意先名、品名、数量、単価、販売金額
と項目があります。

これを月ごとに集計をし転置集計します。
1、2、3、4、5、6、7、8、9、10、11、12 の項目ができ
集計結果を、年間集計.tbl
1、2、3、4、5、6、7、8、9、10、11、12の項目があり
この表に読み込んでいます。

ところが、売上台帳.tblで
2月のデータが全くなかった場合
読み込む段階でエラーになってしまいます。
何か回避策はあるのでしょうか。

よろしくご指導ください。

23392 Re:転置集計 宮城 2003/11/18-19:50
記事番号23390へのコメント
出井幸三さん、こんにちは。

読み込み条件が、{・・・,[1][1],[2][2],[3][3],・・・}
となっており、集計結果表に[2]がないため、読み込めと言って
る項目がないじゃんかというエラーとなっているのでしょうから、
手は二つあろうかと思います。

1.ダミーの2月データを入れる。年、月のみでたぶん OK。
2.読み込み条件から [2][2] を外す。

読み込み条件を都度いじるかということ、12ヵ月あったほうが
アウトプットとしては使いやすいでしょうから、
ダミーデータのほうがよろしいかと。

(書き込むのにビビりますんでお気軽にどうぞ。)

23401 Re:転置集計 うにん 2003/11/18-22:54
記事番号23392へのコメント

>読み込み条件が、{・・・,[1][1],[2][2],[3][3],・・・}
>となっており、集計結果表に[2]がないため、読み込めと言って
>る項目がないじゃんかというエラーとなっているのでしょうから、
>手は二つあろうかと思います。
>
>1.ダミーの2月データを入れる。年、月のみでたぶん OK。
>2.読み込み条件から [2][2] を外す。

一括処理だと*と指定すると項目名照合で対応する項目だけ読み込めるんですが、
読み込み条件ではそういう風に保存してくれないようですね...

23407 Re:転置集計 アックン 2003/11/19-12:56
記事番号23390へのコメント
出井幸三さんさん、こんにちは。ちょうど昨日、私も同じよう処理をしていました。
私の場合は、月を横に展開する例ではありませんが、いろいろな表を3回も転置集計してました。
さて、おそらく、読み込みの条件名に定義されている読み込み項目が読み込み表に存在しないから
エラーになるのでしょう。(私も宮城さんが書いた推測と同じです。)

マニュアル操作でしたら、条件名を12個作っておいてはどうでしょう。
1月だけ、1・2月、1〜3月、・・・・・・、1月〜12月までの12個です。
ただこうすると、表には11月のデータがあるのに、10月までしか読み込まない条件名を実行したら、
11月分がすっぽり落ちてしまいます。エラー表示が出ないから、気づきません。
このようなうっかりミスをなくすために、いつも同じことを繰り返す処理は自動化しておくことをおすすめします。
すでにされているのかもしれませんが、その点には何も触れていらっしゃらないので、
以下、基礎的なことから説明します。

一度、マニュアル操作を履歴(キーマクロです)にして、その履歴ファイル
(ログイン名(だったっけ?).CMD)をもとに一括処理にしておけば、
やがてイベントにすることもできます。実際、私は昨日そうしました。
以下、履歴を書き換える例をあげます。

履歴を使うと、次のような条件名を使う読み込みコマンドが作成されます。
例1:
読み込み条件登録 表,条件名="","・・.tbl",・・
読み込み 表,条件名=""

この2行に代わる読み込みコマンドを追加します(うにんさんが書いたものと同じです)が、
その前にこの2行のコマンドが実行されないようにするため、
行の先頭に *(アスタリスク)を書いて注釈行にしておきます。
例2:
* 読み込み条件登録 表,条件名="","・・.tbl",・・
* 読み込み 表,条件名=""

そしてこれに代わる読み込みコマンドを、次の行に1行だけ書き足します。
例3:
 読み込み 表,"・・.tbl" , *
または
 読み込み 表,"・・.tbl"

これで同名の項目名のみを読み込みますから、
読み込み表に2月の項目がなくてもエラーになりません。(注1)

もし、現在表項目名と読み込み項目名がひとつでも異なるときは、
あらかじめどちらかの表の項目名を一時的に変更してから、読み込みます。

例4:現在表("年間集計表")の項目名を変更します。
 項目名変更 [科目/月] = "科目" /* ←項目名[科目/月]を[科目]に変更 */
 読み込み 表,"転置集計を書き出した表" , *
 項目名変更 [科目] = "科目/月" /* ←項目名を元に戻す */

例5:読み込み表("転置集計して書き出した表")の項目名を変更します。
 表 "転置集計を書き出した表"  /* ←表を開くと編集対象表になる */
 項目名変更 [科目] = "科目/月"
 編集表 "年間集計表"  /* ←年間集計表を編集対象表にする*/
 読み込み 表,"転置集計を書き出した表" , *

例5では、読み込み表("転置集計を書き出した表")を開く操作を必要とします。
例4と例5のどちらにするかは、最終的に作成する表に至るまでの、
転置集計・書き出し・読み込み等の一連の処理の流れをみて、決めればいいと思います。

(注1)「読み込み 表」コマンドに限って、最後の ,* を省略できたと思います。
しかし、「書き出し 表」や「書き出し 転置」などでは、省略するしないで動作が異なりますから、
注意なさってください。
23408 ご指導ありがとうございました。解決しました。 出井幸三 2003/11/19-14:59
記事番号23407へのコメント
宮城さん、うにんさん、アックンさんの諸先生方、ご指導ありがとうございました。

読み込み 表,台帳,*

で解決しました。

皆様のご指導感謝いたします。

また次回もご指導お願いいたします。

何分、インターネット掲示板のルールを知りませんので

失礼なことをしておりましたらお許しください。

23409 Re:ご指導ありがとうございました。解決しました。 アックン 2003/11/19-17:34
記事番号23408へのコメント
出井幸三さん> 解決してよかったですね。
表の名をダブルクォーテーション( " )で囲って、読み込み 表,"台帳",* としてください。
省略できません。
それと、先生と呼ぶのはやめましょう。ここで回答する人の中には、
ふだんから先生と呼ばれる職業の方や、桐の関係者からは先生と呼ばれる方もいますけど、
呼ばれたくない人もいますし、ここでは皆桐の仲間ですから。(=^・^=)
また気軽に質問してくださいね。
23412 Re:ご指導ありがとうございました。解決しました。 出井幸三 2003/11/20-07:56
記事番号23409へのコメント
アックンさん
ご指導ありがとうございます。

>それと、先生と呼ぶのはやめましょう。ここで回答する人の
>中には、ふだんから先生と呼ばれる職業の方や、桐の関係者からは先生と呼ばれる方も
>いますけど、呼ばれたくない人もいますし、ここでは皆桐の仲間ですから。(=^・^=)

すみません。
以後気をつけます。

>また気軽に質問してくださいね。

よろしくお願いいたします。

戻る