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

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[212] 複数毎のファイルを取り扱うマクロについて

川口幸一 [2010/11/30 15:30:35]

お世話になっています。またまた、マクロを教えてください。
3種類のCSVファイルをCassavaの新しいウィンドウで開いています。指定したセルの3データを読み込み、平均値をファイルに書き込みたく思います。説明が判りにくいとおもいますので、VBAで書きました。
For XX = 1 To 512
For YY = 1 To 512
   Workbook("File1.xls").Activate
    Sheets("Page1").Select
     Val1 = Cells(XX, YY)
'
   Workbook("File2.xls").Activate
    Sheets("Page1").Select
     Val2 = Cells(XX, YY)
'
Workbook("File.xls").Activate
Sheets("Page1").Select
Val3 = Cells(XX, YY)
'
Workbook("Main.xls").Activate
Sheets("Page1").Select
Cells(XX, YY) = (Val1 + Val2 + Val3) / 3
'
Next
Next
これをマクロでは、どの様に書けば良いのか、教えてください。よろしくお願いします。

Re: [212] 複数毎のファイルを取り扱うマクロについて

あすかぜ [2010/11/30 17:53:34]

現時点での Cassava マクロでは、複数のファイルは扱えません。
あらかじめデータを 1 ファイルにまとめた上で処理する必要があります。
すみません。

例えば、コマンドプロンプトで次のようなコマンドを実行すれば
File1.csv、File2.csv、File3.csv の 3 つのファイルを連結できます。

> COPY File1.csv+File2.csv+File3.csv File123.csv

それぞれのファイルが正確に 512 行ずつである場合、
連結した File123.csv に対して次のようなマクロを実行すれば平均を計算できます。

for(XX=1; XX<=512; XX++){
 for(YY=1; YY<=512; YY++){
  [XX, YY] = ([XX, YY] + [XX, YY+512] + [XX, YY+1024]) / 3;
 }
}

// 後半は余計な行を削除し、結果を 512 行にする
for(YY=1536; YY>512; YY--){
 DeleteRow(YY);
}

とりあえずはこのような方法で回避をお願いします。
よろしくお願いします。

Re: [212] 複数毎のファイルを取り扱うマクロについて

川口幸一 [2010/12/01 15:57:25]

コマンドプロンプトでコピーを作ることで対応します。
ありがとうございました。

スレッド一覧に戻る返信