• 締切済み

Excelマクロでコピーと貼り付け

今プログラムを作っていますが、なかなか上手く出来ず困っています。 シートのデータをコピーして別のシートに貼り付ける事は可能でしょうか。 シート内全てのデータという訳ではなく、G列に日付が入っている人のみなど 条件付でマクロを作成のしたいのですが・・・。 具体的に言うと、番号・名前・所属・期間・退職日などが項目になっている表があり 個人別で都度退職日を入力しています。 G列の退職日を入力すると、F列の期間に”退職”と表示されるようにIF関数を使っています。 今回マクロを使いたい部分ですが 退職日が入力されている人のみ別のシートにコピーし貼り付けて まとめておきたいなと思っています。 また、番号・名前・所属・機関・退職日などの項目の表が 所属別にあるので5シート分ぐらいに分かれています。 このような場合は、もしコピー貼り付けがマクロで出来たとして 各シート別にコマンドボタンみたいなものを用意しなければいけないのでしょうか。 それとも、コマンドボタン1回のクリックで全てのシートから 退職日が入力されているデータを参照しコピー貼り付けが出来るのでしょうか。 説明がわかりずらくなってしまい申し訳ありません。 今打ち込んであるプログラムです。 Sub ボタン1_Click() Dim n As Integer For n = 1 To 100 If Worksheets("シート1").Cells(n, 6) = "退職" Then Worksheets("シート1").Range("B3:H100").Copy Destination:=Worksheets("退職者リスト").Range("B4:H100") Else End If Next n End Sub コマンドボタンをクリックすると、コピーは出来ているみたいなのですがシート1全てが退職者リストに貼り付けされてしまいます。 F列が”退職”の人だけ参照させたいのですが・・・。 F列は退職日が入力されると、”勤務継続中”→”退職”と変更になるようIF関数を使っています。 マクロはほとんど初心者ですので、もしよければプログラムをある程度構成して頂けるとすごく助かります。 これを機会に少しずつ勉強していきたいなと思っていますので、簡単な説明もあると尚嬉しいです。 よろしくお願い致します。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

検証してませんが。。。。。 Worksheets("シート1").Cells(n, 2).Resize(1 , 7).Copy Destination:=Worksheets("退職者リスト").Cells(Rows.Count, 2).End(xlUp).Offset(1) こんな感じでは? シート1のF列の該当した行(n)のB列(=Cells(n,2))から 列方向にセル範囲をH列まで広げ( Resize(1 , 7) 行方向は変えないので1)、 退職者リストのB列の最終行(Cells(Rows.Count, 2).End(xlUp) ) の一つ下 ( Offset(1) )に貼り付ける。

h074_p
質問者

お礼

ありがとうございます。 無事に解決しました♪ また何かあればぜひよろしくお願い致します☆

関連するQ&A

専門家に質問してみよう