[[20170111104404]] 『マクロについて教えていただきたい』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロについて教えていただきたい』(初心者)

いつも拝見させていただいています。

シート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.