過去の桐井戸端BBS (桐ver.7)
7812 EXCELで作ったCSVを列方向に読み込みたい jenuin 2000/09/27-12:33
桐愛好家の皆様いつもお世話になっております。

先日からEXCELで作成したデータ(CSV)を桐Ver7に読み込もうと悪戦苦闘しております。

作成した表は、行、列ともに1,000データあります。
したがってEXCELの機能上5枚の表に分割されています。
このデータを桐の一覧表1枚に納めたいのですがやり方が分かりません。

別々に読み込むと行方向にのみ読み込まれ、行方向5,000データ、列方向200データになります。
定義作成画面でも試したのですが、データまでは読み込めないようです。

どなたか教えていただけませんか?よろしくお願いします。
7815 Re:列の読み込みができません 宮城 2000/09/27-14:35
記事番号7812へのコメント
jenuinさん、こんにちは。項目数 1,000の表とは・・・。頭がくらくらしそうです。
桐V8の仕様では、2,000項目までいけるそうですが、レコード長は Max.8,000バイト。入りますか?

まあ、入ることにして。こんな感じになってるんですかね。項目名のみでいうと・・・。

本当はこう1レコード。
[ID][あ][い][う][え][お][か][き][く][け][こ]

2レコードになっている。
[ID][あ][い][う][え][お]
[ID][か][き][く][け][こ]

[ID]はなければ振ってください。で、併合で置換する、と。う〜ん、200項目ずつ4回の置換か・・・。

(あの、これやったとして、どう使うんですか? ものすごく疑問。)

7822 Re:列の読み込みができません 佐田 守弘 2000/09/27-19:32
記事番号7815へのコメント
宮城さんが書かれている併合の他に、結合でも可能です。
MS-Excelの表をそれぞれべつ別の桐の表に読み込んでおきます。
そしてどの表にも連番号を振った[ID]の項目を作っておきます。
後は、それらの5つの表を、ID項目をキーとして結合すればよいでしょう。

しかし、宮城さんがいわれる様に、1000項目もある表を作っても、その後何をされるのかに疑問が残ります。

佐田守弘(KS-00119)
7832 Re:列の読み込みができません jenuin 2000/09/27-21:46
記事番号7815へのコメント
Jenuinです。宮城さん、佐田さん早速のコメントありがとうございました。
実は、2年ほど前1度作成したのですが、老化のためかどうやっても思い出せなくて困っていました。
どうもありがとうございました。

宮城さんは No.7815「Re:列の読み込みができません」で書きました。
>jenuinさん、こんにちは。項目数 1,000の表とは・・・。頭がくらくら
>しそうです。桐V8の仕様では、2,000項目までいけるそうですが、レコー
>ド長は Max.8,000バイト。入りますか?

過去に同様の表を作成していますので入ることは入るのですが・・・。

>(あの、これやったとして、どう使うんですか? ものすごく疑問。)


利用法なのですが、a-bへ移動したときの道のりを求めるための表です。
座標が1,000箇所ありますのでこのような巨大な表になってしまいました。

もっと便利な方法もあるかとは思うのですが、なかなかいい方法が思い浮かばなくて・・・・。

良い方法がありましたらご教示くださいませ。

本当にありがとうございました。
7836 Re:列の読み込みができません 宮城 2000/09/28-00:37
記事番号7832へのコメント
jenuinさん、タテとヨコという言いかたを時々するのですが、
タテならまだしも、ヨコを使うときはに決定的に違いが出ます。

配列を使おうと、1000項目分定義しないと使えないんですよ。

私なら迷わずタテの展開にします。
たかが1,000ヶ所なんでしょ。タテとヨコではこれくらい評価が変わります。
ひょっとして2項目あれば足りたりするんじゃないですか?

「レコードが100万件になる」といわれるかもしれませんが、
それがどうかしたんですか? 楽勝ですねえ。

距離とそれに対応する値による二次元テーブルをお薦めします。
DBソフトは表計算ソフトとは全く違います。

7839 私縦に書き込むべきだと思います。 佐田 守弘 2000/09/28-01:59
記事番号7836へのコメント
jenuinさん
宮城さんが言われる通りです。私も全く同感です。

1000地点の情報を処理するのであれば、この1000地点のデータは、縦方向、
つまりレコードデータとして書き込むのがデータベースです。
おそらくみちのりとの事なので、その集計をするのだろうと思います。
データベースで横集計は元来適しておりません。
集計は縦にするものです。

「集計したいみちのりは複数あるので」と言う場合でも、やはり縦に並べて下さい。
[旅程][地点][距離]
この様な形で項目を作ります。
縦に何万点並べようと、行集計で即座にその集計が行えます。

佐田守弘(KS-00119)
7850 Re:私縦に書き込むべきだと思います。 jenuin 2000/09/28-12:33
記事番号7839へのコメント
宮城様、佐田様
早速のコメントありがとうございました。

本システムを作成したのは今を去ること2年前、当時桐は、Ver7が発売されたか発表があったかという時代でした。
1,000地点分のデータを作成するためには、一括処理で組むことは当然期待できず、
EXCELを使わざるを得なかったということがあります。

>1000地点の情報を処理するのであれば、この1000地点のデータは、縦方向、つ
>まりレコードデータとして書き込むのがデータベースです。
>おそらくみちのりとの事なので、その集計をするのだろうと思います。
>データベースで横集計は元来適しておりません。集計は縦にするものです。
>
>「集計したいみちのりは複数あるので」
>と言う場合でも、やはり縦に並べて下さい。
>[旅程][地点][距離]
>この様な形で項目を作ります。
>縦に何万点並べようと、行集計で即座にその集計が行えます。

確かにおっしゃることはごもっともなので、今後改良を検討してみます。
なお、下図で示すa-b等はaからbまでの距離なのでそれを集計することは考えておりません。

その上で、1つ質問したいのですが、

[a] [b] [c] [d] [e]
[a] 0 0.1 1.2 0.5 1.0
[b]0.1 0
[c]1.2
[d]0.5
[e]1.0

作成すべき表は

距離
[a-b]0.1
[a-c]1.2
[a-d]0.5

[b-c]0.8
[b-d]

このようなイメージでよろしいのでしょうか?
ご教示願います。

7881 横でやってみましょう natsu 2000/09/30-23:51
記事番号7850へのコメント
基本はやはり縦だと思いますが、横で頑張りましょう

1000×1000の表が、200×1000の5表に分割されて、5表それぞれがエクセルよりCSVで書き出されるとすると

○○○,×××,・・・・・・・  (200項目)
■■■■,△△,・・・・・・・
・・・・・・・・・・・・・・・
(1000個のレコード)

これを、拡張子CSVではなくTXTに変更します(データ1.txt データ2.txt 等)

次に、1項目のみからなる表を5つ作成します (表1.tbl 表2.tblなど )
最終的に1000項目を持つ表を データ.tbl とします
前準備はここまでで あとは一括処理になります (以下、適当にカスタマイズしてください)
(データ?.txtのレコード数は5つすべて同じだとします
 同じでなければ、一括処理に少し細工が必要です)

****************************************
変数宣言 固有,整数{&i,&j,&データ数}
変数宣言 固有,文字列{&要素}

繰り返し &i=1,5
表 "表"+#str(&i)+".tbl"
行削除 *,圧縮   /* ここでデータをクリアしておきます */
読み込み テキスト,"データ"+#str(&i)+".txt",区切り = "@",{ [要素] } 
繰り返し終了

* 項目名を要素としました 区切り文字はデータに含まれない文字としてください *
* #表引きのファイル名も計算式で指定できたら楽なのに  余談です *

&データ数=#総件数
印字開始 "データ.txt"

繰り返し &j=1,&データ数
 &要素=#U  /* ここで &要素 を初期化しないと大変なことになります */

   繰り返し &i=1,5
    編集表 "表"+#str(&i)+".tbl"
    ジャンプ 行番号 = &j
    条件 (&i<5) 代入 &要素=&要素+[要素]+","
    条件 (&i=5) 代入 &要素=&要素+[要素] /* データの最後にカンマを入れな
い為のコマンドです */
   繰り返し終了

印字 &要素

繰り返し終了

印字終了   /* 印字コマンドはこんな時にも使えます */

* ここで、データ.txtは 1000個の要素を持つ(半角カンマ区切り)テキストファイ
ルになったはずです

表 "データ.tbl"
行削除 *,圧縮   /* ここでデータをクリアしておきます */
読み込み テキスト,"データ.txt",*
表形式編集
****************************************

戻る