• ベストアンサー

エクセルのVBAで

ある列(仮にA列とします)の最終行がA30であり A25までは空白だとします。 この時に、A30の値をA29~A25=データの入力されていないセルに入力(コピー)するにはVBAでどのように記述すればいいのでしょうか? 最終行から、上にその最終行の値をデータの入力されているセルに達するまで入力(コピー)したいのですが。 分りづらい表現で申し訳ありませんが、よろしくお願い致します。

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

  • ベストアンサー
回答No.3

こんな感じかな。 With Range("A65536") Range(.End(xlUp), .End(xlUp).End(xlUp).Offset(1)).Value = _ .End(xlUp).Value End With

fisherman2
質問者

お礼

お礼が遅れて申し訳ありません。 私がやりたかったとおりに動きました。 ありがとうございました。

その他の回答 (3)

回答No.4

No.2の回答を書いた物です。ちょっと補足します。 私の回答もNo.1さんの回答も,エクセルのシート上では空白に見える「スペース」がセルに書きこまれている場合は,期待通りの動きをしませんのでご注意を。

回答No.2

この場合,ご質問の例からA30のセルを選択した状態から,次のマクロを起動すればご希望の処理をすると思います。 A30である必要はありません。選択したセルを基準にしたマクロです。 ちなみに私はA1形式派でなくR1C1形式派です。 ご質問の無い様の解釈に間違いなければ問題なく動作します。ただし,A1形式でいう,1の行を選択するとエラーになります(^^;)。回避は簡単ですけど,質問の内容からありえない選択ですので省略。 Sub test() r = ActiveCell.Row c = ActiveCell.Column rr = r 10 rr = rr - 1 If Cells(rr, c) = "" Then Cells(rr, c) = Cells(r, c) GoTo 10 End If End Sub

fisherman2
質問者

お礼

お礼が遅れてもうしわけありません。 ちゃんと動きました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

単純に例通りなら。 Sub aaa() Dim i As Long  For i = 29 To 25 Step -1   If Range("A" & i).Value = "" Then     Range("A" & i).Value = Range("A30").Value   End If  Next i End Sub

fisherman2
質問者

お礼

お礼が遅れて申し訳ありません。 無事動きました。

関連するQ&A