[[20140410135619]] 『貼り付ける行の値を別の列にです』(blaketto) ページの最後に飛ぶ

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

 

『貼り付ける行の値を別の列にです』(blaketto)

 Sub 作成()
 Dim a(), i As Long, j As Long
 With Sheets("sheet1")
 For i = 6 To .Range("b" & Rows.Count).End(xlUp).Row
 If .Range("c" & i) >= 6211 And .Range("c" & i) <= 6231 Then
 j = j + 1
 ReDim Preserve a(1 To 3, 1 To j)
 a(1, j) = .Range("b" & i).Value
 a(2, j) = .Range("c" & i).Value
 a(3, j) = .Range("g" & i).Value
 End If
 Next i
 If j > 0 Then _
 Sheets("sheet15").Range("e23").Resize(j, 3).Value = Application.Transpose(a)
 End With
 End Sub
 上記コードですが 
 シート1のB列の6行目以降に科目を表示、
 c列にはその科目のコードを表示。g列には金額
 そのコードの6211から6231までのコード及び科目、金額をシート15のe23以降
 に貼り付けるのですが,貼り付ける行が9行しかなく
 それより多いい場合は、L14以降に貼り付けたいのですが、
 ご指導お願いします

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 改めます
(blaketto) 2014/04/10(木) 17:04

 仕切りなおし中のようですが、

 データ量がそんなに多くなければ、配列を使用しなくても良いのでは?
 こんな構えでどうでしょう。
 Sub 作成()
    Dim i As Long
    Dim r As Long: r = 23
    Dim c As Long: c = 5
    For i = 6 To Sheets("sheet1").Cells(Rows.Count, "B").End(xlUp).Row
        If Sheets("sheet1").Cells(i, "C").Value >= 6211 And Sheets("sheet1").Cells(i, "C").Value <= 6231 Then
            Sheets("Sheet15").Cells(r, c).Resize(1, 3).Value = Sheets("sheet1").Cells(i, "B").Resize(1, 3).Value
            If c = 5 And r = 31 Then r = 14: c = 12 Else r = r + 1
        End If
    Next
 End Sub

(Mook) 2014/04/10(木) 19:15


 Mook様
 感謝です
 使用させていただきます

(blaketto) 2014/04/11(金) 13:27


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.