- ベストアンサー
エクセルのVBAでFor文がわかりません。
エクセルのVBAでFor文をもちいてつぎのようなプログラムを作りたいと思っています。 まずSheet1に 一行目に時刻の一日のデータが1時間ごとにあり一時から24時までいかのようにあります。 1:00 2:00 3:00 ・・・ 24:00 二行目にその時刻におけるあるあたいが出力されます。 4 6 4 ・・・ 5 三行目はまた時刻で四行目は同様にそのときのある値が出力されています。 このような感じで31日分あります。 この一行目と二行目をコピーしてSheet2に行列を入れ替えて貼付 という作業を31回くりかえしたいのです。 ↓下にこんな感じで作りたいという形を作ったのですがどこかがおかしいので動きません。 修正とご指摘お願いいたします。 ------------------------ Sub Macro1() Dim x As Integer For x = 1 To 31 Sheet1.Range(Cells(2 * (x - 1) + 1, 1), Cells(2* (x - 1) + 4, 24)).Select Selection.Copy Sheets("Sheet2").Select Cells(24 * (x - 1) + 1, 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=True Next x End Sub --------------------
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、ちょこっと修正。 -------------------- Sub Macro1() Dim x As Integer For x = 1 To 31 Sheets("Sheet1").Select Sheet1.Range(Cells(2 * (x - 1) + 1, 1), Cells(2 * (x - 1) + 2, 24)).Select Selection.Copy Sheets("Sheet2").Select Cells(24 * (x - 1) + 1, 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Next x End Sub --------------------
その他の回答 (1)
- MIYABF5D
- ベストアンサー率26% (17/64)
ちょびっと修正しようとしたら先に回答ありましたね。 でも、これじゃなんか変な気がするんですけど。 範囲指定したいところがよくわからんのでなんともいえんですが。 Sub Macro1() Dim x As Integer For x = 1 To 31 Sheets("Sheet1").Select Range(Cells(2 * (x - 1) + 1, 1), Cells(2 * (x - 1) + 4, 24)).Select Selection.Copy Sheets("Sheet2").Select Cells(24 * (x - 1) + 1, 1).Select ActiveSheet.Paste Next x End Sub
お礼
ちゃんとデバックも出ずに動作しました。 これをもとにいろいろ修正して行きたいと思います。 ありがとうございました。