[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『for構文でシート間の追記』(はっさく)
シートからシートへ、for構文でデータを転記したいです。
具体的には、「メモ」シートの最終行の次の行に、
「データ」シートの2行目以降の全行を特定の列のみ追加していきたいのですが、
例えば「データ」シートに100行あったとしても、最後の100行目しか追加されず、
「メモ」シートには最終行の次に1行追加されるだけです。どこがおかしいのでしょうか。
Private Sub CommandButton1_Click()
lastrow1 = Worksheets(メモ").Cells(Rows.Count, 1).End(xlUp).Row lastRow2 = Worksheets("メモ").Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To Worksheets("データ").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("メモ").Cells(lastrow1 + 1, "A").Value = "2015" Worksheets("メモ").Cells(lastRow2 + 1, "B").Value = Worksheets("データ").Cells(i, "K").Value
Next i
End Sub
< 使用 Excel:Excel2007、使用 OS:Windows7 >
例えば lastrow1=lastrow1+1 のような感じで。
でも、1行ずつでなく、まとめてコピーのほうがよくないですか?
(マナ) 2015/11/21(土) 16:44
もう1つ気になることがあります。
メモシートのデータ最終行ですが、A列、B列 それぞれ、別に把握していますよね。 ということは A列最終が 100行目、B列最終行が200行目 だとすると、データシートから取り込んだ時に
A101 に 2015 、B201 に データシートのK列の値 A102 に 2015 、B202 に データシートのK列の値 ・ ・
こんなようになりますが、いいのですか??
いやいや、A列もB列も最終行は同じだということなら lastrow1,lastrow2 の区別は必要ないですよね?
(β) 2015/11/21(土) 16:52
上記のようにしてみたのですが、最終行の次の行が空白行となり、
その次の行にデータシートの最終行のみが追加されてしまいました。
この記述はおかしいでしょうか。
メモシートでのA列とB列は最終行は同じです。区別必要ないのですね。
大変素人のため、わからないままいろいろと試してしまっています。
(はっさく) 2015/11/21(土) 17:13
Private Sub CommandButton1_Click() Dim i As Long Dim lastrow As Long
lastrow = Worksheets("メモ").Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = 2 To Worksheets("データ").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("メモ").Cells(lastrow, "A").Value = "2015" Worksheets("メモ").Cells(lastrow, "B").Value = Worksheets("データ").Cells(i, "K").Value lastrow = lastrow + 1 Next i
End Sub
ただし、マナさんご指摘の通り、本件はループなしでまとめて転記がいいですよ。
(β) 2015/11/21(土) 17:20
(はっさく) 2015/11/21(土) 17:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.