• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル:下にコピーをマクロで(条件付))

エクセルでのデータコピー方法をマクロ化する方法

このQ&Aのポイント
  • エクセルでのデータ入力時に、最大行の列を判断し、指定の列の値を最大行までコピーする方法をマクロ化する手順を説明します。
  • 具体的な例を挙げながら、C列、D列、E列のうち最大行の列を判断し、コピーすべき列の値を最大行までコピーする方法を説明します。
  • 最大行の列を判断する条件分岐を作成し、指定列の値をコピーするコマンドを実行するマクロの作成手順を解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.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

HGK
質問者

お礼

ありがとうございました。 希望通りの動きをしてくれました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

マクロを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

HGK
質問者

補足

ご回答ありがとうございます。 早速試してみました。 E列が最大値の場合では完璧に出来ました。 ただ、D列が最大の場合はE列は下にコピーしないという点と、C列が最大値の場合は何もしないようにしたいです。 今は、すべての場合において下にコピーされるようですので。 アドバイスお願いします。

関連するQ&A