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

エクセルVBAで元のシート上の特定の記号(a1,a2,a3,a4)を含む行を別シート(Sheet a1,Sheet a2,Sheet a3,Sheet a4)に行ごとカット&コピーしたいのですが、うまくいきません。
教えていただけたら幸いです。
よろしくお願いいたします。

A B C D ... M N
1 a1
2 a1
3 a3
... ...
46 a2
記号はC列です。
全くの初心者なんでvbeのどこに貼り付けたらいいかも教えてください!
よろしくお願いいたします❗

A 回答 (2件)

こんにちは!



>行ごとカット&コピーしたい・・・
カット&コピーだと元のシートが空白だらけになりますので
とりあえず「コピー&ペースト」にしてみました。
一例です。
尚、元データはシート名「Sheet1」にあり、他のシートは
「Sheet a1」「Sheet a2」・・・のようにSheet+半角スペース+a1 のようなシート名になっていて
貼り付け先シートはすべて存在する!という前提です。
そして、各シートとも1行目は項目行でデータは2行目以降にあるとします。

標準モジュールにしてください。
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行します。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1()
 Dim i As Long, k As Long
 Dim sN As String, myFlg As Boolean, myAry
  myAry = Array("a1", "a2", "a3", "a4")
  With Worksheets("Sheet1")
   For i = 2 To .Cells(Rows.Count, "C").End(xlUp).Row
    For k = 0 To UBound(myAry)
     If InStr(.Cells(i, "C"), myAry(k)) > 0 Then
      myFlg = True
      Exit For
     End If
    Next k
    If myFlg = True Then
     sN = "Sheet " & myAry(k)
     .Rows(i).Copy Worksheets(sN).Cells(Rows.Count, "A").End(xlUp).Offset(1) '//★//
    End If
     myFlg = False
   Next i
  End With
End Sub

※ どうしても「カット&コピー」にしたい場合は「★」の行の
>Copy

>Cut
に変更してください。m(_ _)m
    • good
    • 0
この回答へのお礼

御丁寧にありがとうございます!
火曜日に会社で試してみます。
ちなみに、貼り付け先のシートにあるテーブルの最終行のしたにコピーできますか?

お礼日時:2019/09/15 18:21

どこからどこまで出来てるんでしょうか?


コードを貼り付けてください。
    • good
    • 0

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