[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロについて教えていただきたい』(初心者)
いつも拝見させていただいています。
シート1のA列に1から10の値が入っているとして、
最終行を取得後(ここまでできました)
シート2のC1へシート1のA1の値、シート2のE1へシート1のA2の値、
シート2のC10へシート1のA3の値、シート2のE10へシート1のA4の値と
いった動作を求めているのですが・・・
FOR〜NEXT分ではできないのでしょうか。STEP等を使用していましたが、
どうしてもできなくて、お知恵をいただきたいです。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
C1、C10 の後はC19、C28と8行おきにセットするのですか?
Sub test()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim e As Long
Dim i As Long
Dim j As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
e = sh1.Range("A" & Rows.Count).End(xlUp).Row
j = 0
For i = 1 To e Step 2
If i Mod 2 Then
sh2.Cells(j * 9 + 1, 3) = sh1.Cells(i, 1)
sh2.Cells(j * 9 + 1, 5) = sh1.Cells(i + 1, 1)
j = j + 1
End If
Next
End Sub
(ウッシ) 2017/01/11(水) 11:08
お忙しいところ、ご教授ありがとうございます。
動作は思っていた通りでしたが、頂いたコードを見ながら勉強します。まずMODを理解します。
ありがとうございました。
(初心者) 2017/01/11(水) 11:57
ループが1行目(奇数)から始まっているので本当は、MODの判定はいらないんです。
Sub test1()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim e As Long
Dim i As Long
Dim j As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
e = sh1.Range("A" & Rows.Count).End(xlUp).Row
j = 0
For i = 1 To e Step 2
sh2.Cells(j * 9 + 1, 3) = sh1.Cells(i, 1)
sh2.Cells(j * 9 + 1, 5) = sh1.Cells(i + 1, 1)
j = j + 1
Next
End Sub
(ウッシ) 2017/01/11(水) 12:07
解決済かもしれませんが、、、
読む方を主体に見なくても、
書き込む方のセルに着目してみるのもありですよ^^
Sub test3()
Dim ixRow As Long
Dim ixCol As Long
Dim ix As Long
For ixRow = 1 To 37 Step 9
For ixCol = 3 To 5 Step 2
ix = ix + 1
Worksheets(2).Cells(ixRow, ixCol).Value = Worksheets(1).Cells(ix, 1).Value
Next
Next
End Sub
(まっつわん) 2017/01/11(水) 12:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.