- ベストアンサー
指定記号のみ別シートにコピー
- VBAを使用して、指定の記号のみを別のシートにコピーする方法について質問があります。
- 現在、Sheet1の特定のセルの値をSheet2にコピーする際、特定の記号以外や空白のセルを空白としたいです。
- しかし、現在のコードでは、既存の記号も削除されてしまいます。0を入力しても同様の問題が発生しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
今回の図はとても見やすいので滞りなく検討することができました。 Sub シートコピー() Dim r As Range For Each r In Worksheets("Sheet1").Range("B1:D5") With Sheets("Sheet2") If WorksheetFunction.CountIf(.Range("A8:A10"), r.Value) Then .Range(r.Address).Value = r.Value ElseIf WorksheetFunction.CountIf(.Range("C8:C10"), .Range(r.Address).Value) = 0 Then .Range(r.Address).Value = "" End If End With Next End Sub 少し解説すると、 sheet1が入力文字の場合はsheet2に記入、 違う場合、sheet2が記号「○、●、◎」(sheet2のC8:C10でない場合は""を記入(セルを空白に) としたところ、表-3と同一の結果が得られました。 ついでに、Range("A8:A10")のところも一応明示的にSheets("Sheet2")を指定し、その結果Sheets("Sheet2")が5個になってしまったのでWith Sheets("Sheet2")を使ってみました。 蛇足ですが、WorksheetFunction.CountIfのかわりにRange.Findを使うこともできます。 たとえば、 If WorksheetFunction.CountIf(.Range("A8:A10"), r.Value) Then は If Not .Range("A8:A10").Find(r.Value) Is Nothing Then でもかまいません。
お礼
本当ににありがとうございます。思い通りにシートに入力できました。今後、質問添付図は見やすいよう心掛けます。