過去の桐井戸端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",* 表形式編集 **************************************** |