dポイントプレゼントキャンペーン実施中!

エクセルでシートにデータが入ってますが、
このデータの内、条件を満たす((例)>04/03/31)
ものだけを、別のシートに自動的にコピーしたいのですが、どうすればいいのでしょうか?
説明が分かりづらいかと思いますが、
よろしくお願いします。

A 回答 (3件)

ツール-マクロ-VBE-挿入-標準モジュールに下記を貼りつけ。


Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
'----A
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
'-----B
d = sh1.Range("A2").CurrentRegion.Rows.Count
' MsgBox d
j = 2
'-----
sh1.Activate
dt = Application.InputBox("日付2004/2/12")
dt2 = Split(dt, "/")
dt3 = DateSerial(dt2(0), dt2(1), dt2(2))
For i = 2 To 1 + d
'If sh1.Cells(i, "A") > #3/31/2004# Then
If sh1.Cells(i, "A") > dt3 Then
'-----C
sh2.Cells(j, "A") = sh1.Cells(i, "A")
sh2.Cells(j, "B") = sh1.Cells(i, "B")
sh2.Cells(j, "C") = sh1.Cells(i, "C")
j = j + 1
End If
Next i
End Sub
(自分にあわせて修正点)
(上記コードのAの部分)
Sheet1、Sheet2の部分を自分のシート名に
変える
(B)
表の始まる行を2としてますが、実情に合わせて変える。
For i = 2 To 1 + d
の部分もそれに合わせて変える。
(C)
項目数に合わせて増減して、記述行を増減してください。
シート1のD列をシート2のA列にもってくるなら
sh2.Cells(j, "A") = sh1.Cells(i, "D")
(その他)
'If sh1.Cells(i, "A") > #3/31/2004# Then
日付が決まっている時の記述例です。
そちらの先頭の’を取り去るとそちらが有効になり、代わりにIf sh1.Cells(i, "A") > dt3 Thenの先頭に’をいれて'If sh1.Cells(i, "A") > dt3 Thenにしてください。

この回答への補足

詳しく教えていただき、有難うございます。
上記のマクロは必死ながらも、なんとか組めました。
それで、あつかましいんですが、
質問では日付を3/31で指定したんですが、
日付が入っていないもの(空白のセル)だけを
選ぶ場合はどうすればいいですか?
申し訳ないですが、お願いします。

補足日時:2004/07/07 16:42
    • good
    • 0

#2の補足について。


>日付が入っていないもの(空白のセル)だけを
選ぶ場合はどうすればいいですか?
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
'----A
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
'-----B
d = sh1.Range("A2").CurrentRegion.Rows.Count
j = 2
'-----
sh1.Activate
For i = 2 To 1 + d
If sh1.Cells(i, "A") = "" Then 'ここを変更した
'-----C
sh2.Cells(j, "A") = sh1.Cells(i, "A")
sh2.Cells(j, "B") = sh1.Cells(i, "B")
sh2.Cells(j, "C") = sh1.Cells(i, "C")
j = j + 1
End If
Next i
End Sub
でどうでしょう。やって見てください。
(自分のケースにあわせて修正点)は同じく注意して修正してください。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
無事に完成しました。

お礼日時:2004/07/07 19:09

if条件分を使って、条件にあっていたら、その値、それ以外は""(空白)を出力するようにすればよいと思います。

    • good
    • 0

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