- 題名・名前・本文は必ず入力してください。
- 題名は、できれば具体的な本文内容がイメージできるものにしてください。
- スパムよけのため、本文中に句読点記号が含まれていない場合にはエラーとなります。 「,」「.」ではなく「、」「。」を使ってください。
- [バグ][要望][質問][済][未] の分類は管理人が後から勝手に付加しています。 書き込み時は意識する必要はありません。
[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]
コマンドプロンプトでコピーを作ることで対応します。
ありがとうございました。