• ベストアンサー

Excelデータコピーについて

どうファイルのシートにデータをコピーする処理を 自動化したいのですが、 シート1のB列、C列、E列入ったデータを シート2のC列、D列、H列に出力。 のようなことをやりたいのですが、 あらかじめシート2に=セル番地で明示的にやっておけば できますが、関数を入れておくとファイルが重くなってしまうので、 シート1のデータがある分、出力させる処理を作りたいです。 自動化できる方法がありましたら教えてください。

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

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

自動化とはVBAのことを言っているのでしょうか。 以下の手順をお試しください。 (各シート名はSheet1、Sheet2としてあります。) 1.AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。 2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。 '********これより下********** Sub test01()   Dim st As Worksheet, x As Long, y As Long, z As Long   Set st = Sheets("Sheet1")   With st     x = .Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得     y = .Cells(Rows.Count, "C").End(xlUp).Row 'C列最終行取得     z = .Cells(Rows.Count, "E").End(xlUp).Row 'E列最終行取得   End With   With Sheets("Sheet2")     .Range(.Cells(1, "C"), .Cells(x, "C")).Value = st.Range(st.Cells(1, "B"), st.Cells(x, "B")).Value 'C列に値転記     .Range(.Cells(1, "D"), .Cells(y, "D")).Value = st.Range(st.Cells(1, "C"), st.Cells(y, "C")).Value 'D列に値転記     .Range(.Cells(1, "H"), .Cells(z, "H")).Value = st.Range(st.Cells(1, "E"), st.Cells(z, "E")).Value 'H列に値転記   End With End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります. 4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。

chirorin22
質問者

お礼

遅くなりましたが、ありがとうございました。 別のやり方でできました。

その他の回答 (1)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

関数を使いたくないのでしたらマクロを使うしかありません たぶんマクロも重いと思いますよ とりあえず記録マクロ(新しいマクロの記録)で作業手順を記録しマクロ化し それを再生するだけで可能です いろいろ試してみてください

関連するQ&A

専門家に質問してみよう