公式アカウントからの投稿が始まります

①シートのセルCに数字が入ったら、その1行を②シートにコピーしたいです。
写真で言うと、504行を別シートにコピーするイメージです。

出来れば、②シートの1行目にコピーし、506行目に2が入ったら、②シートの2行目にコピーすることを理想としています。

「①シートのセルCに数字が入ったら、その1」の質問画像

A 回答 (2件)

コピー先のシート名は、Worksheets("Sheet2") になっています。



'//シートモジュール
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim i As Long
 If Target.Column <> 3 Then Exit Sub  'C列以外は除外
 If Target.Count > 1 Then Exit Sub  '複数選択をしたら除外
 If Not IsNumeric(Target.Value) Then Exit Sub '数字以外は除外
 With Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp) 'シート2の最終行
  If .Value <> "" Then
   i = .Row + 1 '最終行が値があれば、+1行
  Else
   i = .Row '最初の一行目 
  End If
 End With
 Application.EnableEvents = False
 Range(Cells(Target.Row, 1), Cells(Target.Row, Columns.Count).End(xlToLeft)).Copy _
  Worksheets("Sheet2").Cells(i, 1)
 Application.EnableEvents = True
End Sub

なお、ここの部分
Range(Cells(Target.Row, 1), Cells(Target.Row, Columns.Count).End(xlToLeft)).Copy _
は、該当セルの1列目から、右のデータがある範囲という意味です。
Target.EntireRow.Copy
と書けば簡単にはなりますが、メモリ的に負担になることを考えて、あえて、データのある範囲にしました。

なお、掲示板で製作依頼(作業依頼ではありません)というのは、人によって解釈の仕方が違いますが、私は、製作までの金銭的な価値だと思うのです。言い換えると、その回答のための拘束された時間に比例します。しかし、それ以上に、こちらは気持ち良く終わり、また質問者さんは満足していただければ十分なのです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
VBAまでは書いたことがないのですが、試して見たところ出来ました。
ありがとうございました。

また、コメントもありがとうございます。それぞれの解釈があるとは思いますが、今回は質問が不躾だったのかもと少し思っています。
色々ありがとうございました。

お礼日時:2019/06/21 19:37

C列にオートフィルタを設定して「空白以外」を表示させてコピーして目的の場所に貼り付ければいい。


これを順次繰り返しましょう。

・・・余談・・・
残念ながらここは「代わりに作って」という作業依頼をする場所ではありません。
自分で問題を解決できるためのアドバイスをする場所です。
そのアドバイスの中でやり方の例をあげることはあります。
具体的に何が分からないのかを質問本文、補足に書くとそれに対して具体的なアドバイスをもらえますよ。


 問「他のシートのセルを参照する方法が分からない」
 答「=シート名!セル番地 のようにして参照しましょう。=Sheet2!A1 みたいにね」
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
関数でいろいろ試してたのですが、なかなか上手く出来ず。
引き続き試してみます。
ありがとうございました。

お礼日時:2019/06/17 06:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!