- ベストアンサー
入力シートから別シートに転記・蓄積について
エクセルで入力シートのA1:D5(5行)の範囲を別シート(DBシート)の転記・蓄積させる方法を教えてください。また、入力データがA1:A5(1行)のときもあれば、A1:D5(5行)の場合もあるとします。宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでいかがでしょうか? Sub test01() Dim ws1 As Worksheet, ws2 As Worksheet Dim x As Long, y As Long Set ws1 = Sheets("入力") Set ws2 = Sheets("DB") x = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1 y = ws1.Cells(Rows.Count, "A").End(xlUp).Row ws1.Cells(1, "A").Resize(y, 4).Copy ws2.Cells(x, "A") End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
もしこれを関数式でできるや、やりたいと考えているとしたら、関数を十分使いこなしてないために、関数式では苦手な分野が質問者は判っていないです。 (1)累積するキッカケというものが関数では捉えられない。 (2)持ってゆく方(データを受ける方。DBシート)のセルに式を書かないといけないが、それが過去のDBデータ数や入力シートのデータ数で変わる(特に前者)こと (3)データを累積したらその行の式は邪魔になること の3点が難しくなる原因です。 ーー VBAでは (1)は、操作者がコードを実行するとか、コマンドボタンを押すということでトリガーは引けます。 (2)もDBシートの最終行は簡単に捉えられるのでやりやすい (3)もVBAでは値をセットするだけにして、数式をセルにセットしないので、この点は関係ない。 ーーー 具体的にはコードは既回答で出ているので略。
- pbforce
- ベストアンサー率22% (379/1719)
varData=Sheets("入力シート").Range("A1:D5") intRowNo=Sheets("DBシート").Range("A1").End(xlDown).Row Sheets("DBシート").Cells(intRowNo+1,1).Resize(5,4)=varData 動くか不明・・・ヒントにはなると思います。