- ベストアンサー
エクセルのVBAで
ある列(仮にA列とします)の最終行がA30であり A25までは空白だとします。 この時に、A30の値をA29~A25=データの入力されていないセルに入力(コピー)するにはVBAでどのように記述すればいいのでしょうか? 最終行から、上にその最終行の値をデータの入力されているセルに達するまで入力(コピー)したいのですが。 分りづらい表現で申し訳ありませんが、よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じかな。 With Range("A65536") Range(.End(xlUp), .End(xlUp).End(xlUp).Offset(1)).Value = _ .End(xlUp).Value End With
その他の回答 (3)
- housyasei-usagi
- ベストアンサー率21% (112/526)
No.2の回答を書いた物です。ちょっと補足します。 私の回答もNo.1さんの回答も,エクセルのシート上では空白に見える「スペース」がセルに書きこまれている場合は,期待通りの動きをしませんのでご注意を。
- housyasei-usagi
- ベストアンサー率21% (112/526)
この場合,ご質問の例から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
お礼
お礼が遅れてもうしわけありません。 ちゃんと動きました。
- papayuka
- ベストアンサー率45% (1388/3066)
単純に例通りなら。 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
お礼
お礼が遅れて申し訳ありません。 無事動きました。
お礼
お礼が遅れて申し訳ありません。 私がやりたかったとおりに動きました。 ありがとうございました。