- ベストアンサー
エクセルでのデータコピー方法をマクロ化する方法
- エクセルでのデータ入力時に、最大行の列を判断し、指定の列の値を最大行までコピーする方法をマクロ化する手順を説明します。
- 具体的な例を挙げながら、C列、D列、E列のうち最大行の列を判断し、コピーすべき列の値を最大行までコピーする方法を説明します。
- 最大行の列を判断する条件分岐を作成し、指定列の値をコピーするコマンドを実行するマクロの作成手順を解説します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#01です。質問文を良く読んでいませんでした。すみません。 以下に差し替えてください。後半の2行を追加しています Sub Macro() Dim LastR(5), MaxR As Long Dim MaxCOL As String Dim idx As Integer With ActiveSheet For idx = 3 To 5 LastR(idx) = .Cells(65536, idx).End(xlUp).Row Next idx If LastR(3) > LastR(4) And LastR(3) > LastR(5) Then MaxR = LastR(3) MaxCOL = "C" Else If LastR(4) > LastR(3) And LastR(4) > LastR(5) Then MaxR = LastR(4) MaxCOL = "D" Else If LastR(5) > LastR(3) And LastR(5) > LastR(4) Then MaxR = LastR(5) MaxCOL = "E" Else MaxCOL = "" End If End If End If If MaxCOL = "" Then Exit Sub Else For idx = 3 To 5 If LastR(idx) < MaxR Then .Cells(LastR(idx), idx).Copy _ Destination:=Range(.Cells(LastR(idx), idx).Offset(1, 0), _ .Cells(MaxR, idx)) Else '追加 Exit For '追加 End If Next idx End If End With End Sub
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
マクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 Sub Macro() Dim LastR(5), MaxR As Long Dim MaxCOL As String Dim idx As Integer With ActiveSheet For idx = 3 To 5 LastR(idx) = .Cells(65536, idx).End(xlUp).Row Next idx If LastR(3) > LastR(4) And LastR(3) > LastR(5) Then MaxR = LastR(3) MaxCOL = "C" Else If LastR(4) > LastR(3) And LastR(4) > LastR(5) Then MaxR = LastR(4) MaxCOL = "D" Else If LastR(5) > LastR(3) And LastR(5) > LastR(4) Then MaxR = LastR(5) MaxCOL = "E" Else MaxCOL = "" End If End If End If If MaxCOL = "" Then Exit Sub Else For idx = 3 To 5 If LastR(idx) < MaxR Then .Cells(LastR(idx), idx).Copy _ Destination:=Range(.Cells(LastR(idx), idx).Offset(1, 0), _ .Cells(MaxR, idx)) End If Next idx End If End With End Sub
補足
ご回答ありがとうございます。 早速試してみました。 E列が最大値の場合では完璧に出来ました。 ただ、D列が最大の場合はE列は下にコピーしないという点と、C列が最大値の場合は何もしないようにしたいです。 今は、すべての場合において下にコピーされるようですので。 アドバイスお願いします。
お礼
ありがとうございました。 希望通りの動きをしてくれました。