データの解析で楽するためのマクロを作ろうとしたら,しょーもないところで躓いてしまった.
まとめておきます.
何をしたかったか
このとき,各条件での「Current1」だけをSheet2にまとめたい.
こんな感じ↓↓↓
この場合は数が少ないから手でできるけれど,データが増えてくるとかなり面倒.
コピーするだけでは?
以前こちらのサイトを拝見し,「は~すご」と思ったので,コピーは以下のように書くことにしていた.
Worksheets("Sheet2").Range("C5:C26").Value = Worksheets("Sheet1").Range("C5:C26").Value
さて,今回は一定間隔で並ぶデータをコピーしたい.
上記ダミーデータでは3条件だが,条件数は今後変わるかもなので,これを変数にしてFor文で回せるようにしよう.それならば,Cells(row,column)でセルを指定するのが何かと都合が良い.
というわけでコピーのところを以下のように書き換え.
Worksheets("Sheet2").Range(Cells(5,3), Cells(26,3)).Value = Worksheets("Sheet1").Range(Cells(5,3), Cells(26,3)).Value
"C5:C26" を Cells(5,3), Cells(26,3) に書き換えただけですね.実際はここに変数を入れてます.
エラー吐く
調べたら,どうもCellsでセル指定できるのはアクティブシート内だけのようだ.
この情報にたどり着くまでにえらい時間をかけてしまった...
解決策
こちらのサイトのお世話になりました.
結論を言うと,Cellsの上位のオブジェクト式を省略せずに書けば動きます.
是非上記サイトもご参照ください.
Worksheets("Sheet2").Range(Sheets("Sheet2").Cells(5,3), Sheets("Sheet2").Cells(26,3)).Value = Worksheets("Sheet1").Range(Sheets("Sheet1").Cells(5,3), Sheets("Sheet1").Cells(26,3)).Value
以上!