[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[332] 数値列の文字列認識

tac [2015/09/29 18:48:15]

初めまして、お世話になります。
cassava editor ver1.8.5を使用しております。
プログラムに関してはど素人です。

基本的なことかも分かりませんが、
お教え下さい。

数字のみの列が複数列ある時に、
ある数字列はダブルクォーテーションを付け、
他の数字列はダブルクォーテーションを付けないと
言った指定をすることは出来るのでしょうか?

クオートでは、数字のみの列は全て付けるか、
全て付かないかのいずれかしかできませんでしたので。。

1行目は項目行で全て文字列、
2行目以降は値が入っており、CSVデータです。

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

Re: [332] 数値列の文字列認識

あすかぜ [2015/09/29 23:40:41]

書き込みありがとうございます。

Cassava 標準の機能ではダブルクォーテーションを付ける列を指定することはできませんが、
エクスポートマクロという機能を利用することで特定の列のみにダブルクォーテーションを付けた CSV ファイルを出力することができます。

http://www.asukaze.net/soft/cassava/macro/asukaze/quote.csv.cms
上のリンクを右クリックして「対象をファイルに保存」(もしくは「名前を付けてリンク先を保存」)でダウンロードし、Cassava Editor の「Export」フォルダに置いてください。

使い方は
1. 対象のファイルを開く
2. [ファイル]-[エクスポート] を実行
3. 保存ダイアログが表示されるので、ファイルの種類で QUOTE.CSV を選択
4. ファイル名を指定して、保存ボタンをクリック
5. インプットボックスが表示されるので、「2,3,4」のようにダブルクォーテーションを付ける列番号をカンマ区切りで指定
です。

マクロファイルを編集して InputBox("...") のかわりに "2,3,4" などの具体的な列番号を記述しておけば、
毎回列番号を指定するのではなくあらかじめクオートする列を決めておくことも可能となります。

このエクスポートマクロで期待する動作が実現できるでしょうか?
よろしくお願いします。

Re: [332] 数値列の文字列認識

tac [2015/09/30 11:01:32]

こちらこそ、早々にご回答頂きありがとうございました。

早速、教えて頂いたマクロファイルの列番号を指定し、
試したところ、2行目以降の部分は解決できました。

ただ、1行目の項目名が入力されている行だけは、
全て文字列としてダブルクォーテーションを付けたいのですが、
やり方はありますでしょうか?

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

Re: [332] 数値列の文字列認識

tac [2015/09/30 14:29:33]

たびたび申し訳ございません。

先程、
>早速、教えて頂いたマクロファイルの列番号を指定し、
>試したところ、2行目以降の部分は解決できました。
とメールしましたが、その後、ワードパットにて
加工前CSVと加工後CSVを比較し、「""」の付き方や並びに
相違ないかチェックしていたところ以下が判明しました。

・加工前CSVの各列(各項目)には最大桁数が設定されており、
最大桁数以下の値が入っている場合は、空白(スペース)で
最大桁数分埋められる。
※ただし、1行目の項目行は最大桁数を反映せずに
  入力桁数で「""」が付く

「文字」列については、空白部分も含めて「""」が付くのですが、
「数字」列については、空白部分が除外されてしまいます。

例えば、"20150930 "という10桁の文字列に変更したいのですが、
2文字分の空白を除いた"20150930"という8桁の文字列になってしまいします。

また、同じく「数字」列で「""」を付けずに「**.00 」のように
小数点第2位まで表示し、最大桁数が9桁に設定されている列もあります。

「数字」列を空白を含む最大桁数まで増やしたり、
書式を変更した上で、
「""」を付ける付けないのマクロを組むとなると、
難しいでしょうか?

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

Re: [332] 数値列の文字列認識

あすかぜ [2015/10/01 00:26:50]

1 行目に関しては、マクロ中の条件式に「y == 1 ||」を追加することで 1 行目をクオートして出力することができます。
http://www.asukaze.net/soft/cassava/macro/asukaze/bbs332_20150930.csv.cms

書式についてですが、こちらで試した範囲では、スペースや小数点も元のファイルのまま保存されていました。
Cassava Editor 上ではスペースや小数点は正しく表示されているでしょうか?
(オプションダイアログの「データ形式」で「ロード時区切り文字リスト」に「\_」が含まれているとファイルを開いた時にスペースが削除されてしまいますが、特に設定を変更しておらずファイルの拡張子が「.csv」であればスペースもデータの一部となるはずです)

書式が変わってしまう原因が不明であればエクスポートマクロの中で書式を調整することはできますが、列ごとに書式が違うようなので若干面倒くさいです。
パターンとしては、
・10 桁までスペースで埋める
・小数点以下 2 桁まで出力し、9 桁までスペースで埋める
の 2 つだけでよいでしょうか?
具体的に何列目にどの書式を適用したいかを教えていただいてもよいでしょうか?

よろしくお願いします。


Re: [332] 数値列の文字列認識

tac [2015/10/01 18:23:22]

毎回、ご丁寧にありがとうございます。

私は、cassavaの基本的な使い方を勘違いしていたです。

cassavaとは、
CSVデータを加工・保存後に「""」や書式加工することも出来るし、
cassavaでCSVデータを開いてからデータ加工することも出来る
ソフトだったんですね。

ご指摘頂いた通り、元のCSVデータをcassavaにて
開くと書式や空白はそのままで取り込めております。
cassava上でセル値の加工を行い、
頂いた文字列指定のマクロを併用すれば
何とかできそうです。

わざわざ、難しく考えていたようです。。。

お手間ばかりをかけする形になってしまい申し訳ございませんでした。勉強になりました。

また、不明な点が出た際は質問させてもらいますが、
懲りずにお付き合い頂ければ幸いです。

どうもありがとうございました!

スレッド一覧に戻る返信