• ベストアンサー

入力シートから別シートに転記・蓄積について

エクセルで入力シートのA1:D5(5行)の範囲を別シート(DBシート)の転記・蓄積させる方法を教えてください。また、入力データがA1:A5(1行)のときもあれば、A1:D5(5行)の場合もあるとします。宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

こんな感じでいかがでしょうか? 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)
回答No.3

もしこれを関数式でできるや、やりたいと考えているとしたら、関数を十分使いこなしてないために、関数式では苦手な分野が質問者は判っていないです。 (1)累積するキッカケというものが関数では捉えられない。 (2)持ってゆく方(データを受ける方。DBシート)のセルに式を書かないといけないが、それが過去のDBデータ数や入力シートのデータ数で変わる(特に前者)こと (3)データを累積したらその行の式は邪魔になること の3点が難しくなる原因です。 ーー VBAでは (1)は、操作者がコードを実行するとか、コマンドボタンを押すということでトリガーは引けます。 (2)もDBシートの最終行は簡単に捉えられるのでやりやすい (3)もVBAでは値をセットするだけにして、数式をセルにセットしないので、この点は関係ない。 ーーー 具体的にはコードは既回答で出ているので略。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

varData=Sheets("入力シート").Range("A1:D5") intRowNo=Sheets("DBシート").Range("A1").End(xlDown).Row Sheets("DBシート").Cells(intRowNo+1,1).Resize(5,4)=varData 動くか不明・・・ヒントにはなると思います。

関連するQ&A

専門家に質問してみよう