- ベストアンサー
EXCEL 異なった行に振り分ける方法
自動記録マクロがやっと出来る超初心者です。 よろしくお願いします。 EXCELです。 A1のセルに 1か2か3の数字が入っています。 2行目にA2~CX2まで項目が入っています。 A1が1の時 2行目のA2~CX2列の内容を4行目に移し A1が2の時 2行目のA2~CX2列の内容を5行目に移し A1が3の時 2行目のA2~CX2列の内容を6行目に移します。 どのようにしたら良いのか教えてください。 マクロ超初心者ですので、わかりやすく教えていただける大変助かります。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 移動でなくて、コピーですね。それで、一点確認があるのですが、 > また、その値+1の行に必ず移す、という規則性があります とありますが、質問文ではA1が1のときは4行目、というように+3になっています。とりあえず+3で書いてみました。A1が文字列やマイナス、空白の場合はエラーを出すようにしていますが、0以上の数値だと4以上でもエラーにはしていません。 ご希望の動作と違うようでしたら、また補足をお願いします。 Sub Furiwake() Dim CopyRow As Variant CopyRow = Range("A1").Value If Not IsNumeric(CopyRow) Or CopyRow < 0 Then MsgBox "A1のセルに0以上の数値を入力してください", vbExclamation, "入力エラー" Exit Sub End If CopyRow = CopyRow + 3 Range("A2", "CX2").Copy (Cells(CopyRow, 1)) End Sub
その他の回答 (1)
- ham_kamo
- ベストアンサー率55% (659/1197)
「移す」というのは、2行目は空になる、ということでいいですか? それならこんな感じでしょうか。A1の値がもっとたくさんあり、その値+1の行に必ず移す、という規則性があればSelect CaseでなくIf文を使った方がいいと思いますが、とりあえずこれで。(If文を使ったやり方はご自分で考えてみてください) Dim CopyRow As Integer Sub Furiwake() Select Case Range("A1").Value Case 1 CopyRow = 4 Case 2 CopyRow = 5 Case 3 CopyRow = 6 Case Else Exit Sub End Select Range("A2", "CX2").Cut ActiveSheet.Paste (Cells(CopyRow, 2)) End Sub
補足
早速有難うござました。 すみませんでした。言葉がたらなくて申し訳ございません。 「移す」ではなく。「コピー」です。 すみませんがよろしくお願いします。 IFを使ったやり方の方が易しいようですので 申し訳ございませんが、よろしかったらそちらも教えていただけますか。 また、その値+1の行に必ず移す、という規則性があります よろしくお願いいたします。
お礼
助かりました。 本当に有難うございました