[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『vbaでのコピペについて2』(らむ)
前回『範囲の決まったコピペ』について教えていただきました。
再度つまづいておりまして、お知恵を貸して下さい。
シート1のB列からAF列まで3行ごと、5行おきに
データがあります。
※具体的にはB2からAF4までデータがあり、
B5からAF9まで空白というように、
B2から3行分はデータあり、その後5行は空白
というデータがつづいてます。
ひとまず、データのある行は下記コードでとれるかと
思うのですが、
その後、B列からAF列まで3行ごと、5行おきに
コピーし、シート2のCの2に値のみ貼り付けたい場合、
どの様にしたらいいでしょう??
シート2のA列にはA2から氏名が1人につき31行分並んでおり、
シート2のA2からの1人目31行分が、シート1のB2からAF4まで、
シート2の2人目がシート1のB10からAF12〜、、、
とそれぞれ対応してます。
Dim i As Long
With Worksheets("シート1")
i= .Range(Cells(2, 2), .Cells(Rows.Count, 32).End(xlUp)).Value '「シート1」B2〜AF列最終行まで取得
End With
< 使用 Excel:Excel2013、使用 OS:Windows7 >
丸ごと、値を代入すればいいんじゃないですか?
Sub valShift() Dim rngToShift As Range With Worksheets("シート1") Set rngToShift = .Range("B2", .Cells(.Rows.Count, 32).End(xlUp)) End With
Worksheets("シート2").Range(rngToShift.Address).Offset(, 1).Value = rngToShift.Value End Sub
(半平太) 2016/02/10(水) 16:35
もしかして、シート2の方は3行の下に何かデータとか数式とか入っているんでしょうか?
(半平太) 2016/02/10(水) 16:37
こんなことでしょうか?
Sub Sample() Dim shF As Worksheet Dim shT As Worksheet Dim i As Long Dim z As Long Dim x As Long
Set shF = Sheets("Sheet1") Set shT = Sheets("Sheet2")
z = shF.Range("B" & Rows.Count).End(xlUp).Row 'Sheet1最終行番号 x = 2 'Sheet2転記開始行番号
For i = 2 To z Step 8 shT.Cells(x, "C").Resize(31, 3).Value = WorksheetFunction.Transpose(shF.Range("B" & i & ":AF" & i + 2)) x = x + 31 Next
End Sub
(β) 2016/02/10(水) 20:53
まさにその通りです!!
3行ごと、5行おきに、、、で思考停止してましたが、
For以下のコードを見て、脱帽致しました!
本当にありがとうございます!
もっと勉強致します。
半平太様
ご協力ありがとうございました!
(らむ) 2016/02/10(水) 23:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.