- ベストアンサー
Excel コピーについて
Excel2000を使用しています。 データが入っているシートがあります。 ある1つの列について、下の行を見て、次の文字があるところまで、次々とセルのコピーを行いたいのですが、VBAを教えてください。 次の文字があるところまでは、空白のセルです。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
質問を誤解しているかもしれませんが 仮にA列を対象として、入力されたセルの下に空白セルにがあった場合、入力されたセルの値を空白セルに入れるVBAの例です。 ただし、A列での最終入力行を終点とします。(そうしないと65536行まで埋めてしまうので) Sub test() x = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To x If Cells(i, "A") = "" Then Cells(i, "A") = Cells(i - 1, "A") End If Next i End Sub
その他の回答 (4)
- ham_kamo
- ベストアンサー率55% (659/1197)
No.1、3です。 > 下記の行が黄色くなっていました。 > For i = 2 To Cells(Rows.Count, Col).End(xlUp).Row すみません、ちょっと原因がわからないです。 その前の、 Const Col As String = "A" '列名を指定 というところを、誤って存在しない列名に書き換えたりしない限り、うまくいくはずだと思うのですが、そういうことはないですか? No.2さんの回答で試すとどうなりますでしょうか。やっていることは同じことなのですが。
お礼
お礼が遅くなり申し訳ありません。 なぜか、エラーが出ますが…ANo.2さんの方法で解決しました。 何度もご回答いただき、どうもありがとうございました。 また、次回もよろしくお願いいたします。
- imogasi
- ベストアンサー率27% (4737/17069)
プログラマにあるまじき、あいまい性を含んだ質問。 適当に解釈して Sub test01() d = Range("A65536").End(xlUp).Row ' MsgBox d m = 1 For i = 1 To d If Cells(i, "A") = "" Then Cells(m, "A").Copy Destination:=Cells(i, "A") Else m = i End If Next i End Sub コピーを使っているので、書式(パターン、罫線、フォントなど)も引き継ぎ写します。 最終行の判別に、上記A列で行っては、いいのかな、という心配があります。 隣列B列の方が適当ならば Range("B65536").End(xlUp).Row にしてください。 A列 B列 1 a ー b ー c 2 d ー e ー f ー g 3 h ->ここで終わるか ー i ー j ->ここで終わるか
お礼
お礼が遅くなり申し訳ありません。 ANo.2さんの方法で解決しました。 ご回答いただき、どうもありがとうございました。 また、次回もよろしくお願いいたします。
- ham_kamo
- ベストアンサー率55% (659/1197)
No.1です。 エラーになったとのことですが、VBAの画面が出てきてエラーの行が黄色くなっているかと思います。どの行でエラーが出たか、補足をお願いできますか? 当方では同じようなデータで試してみたところ、エラーにならずにうまくいったのですが…。
補足
度々恐れ入ります。 下記の行が黄色くなっていました。 For i = 2 To Cells(Rows.Count, Col).End(xlUp).Row 申し訳ありません。 よろしくお願いいたします。
- ham_kamo
- ベストアンサー率55% (659/1197)
「次の文字があるところまで、次々とセルのコピーを行いたい」 というのが、どう解釈していいかちょっとよくわからないのですが、 たとえばA列を上から調べていって。空白の上があれば1つ上のセルをコピーする、という意味でしょうか。 そうであれば、以下のVBAでいかがでしょう。"A"のところは実際の列名を入れてください。 Sub Sample() Dim i As Long Const Col As String = "A" '列名を指定 For i = 2 To Cells(Rows.Count, Col).End(xlUp).Row If Cells(i, Col).Value = "" Then Cells(i, Col).Value = Cells(i - 1, Col).Value End If Next End Sub
補足
早速にご回答いただき、ありがとうございます。 残念ながら、実行した結果、エラーになってしまいました。 行いたい作業は、例えば、 A列の1行目に入力されたセルがあり、2~4行目は空欄。 5行目にまた入力されたセルがあります。 2~4行目は、1行目に入力されたセルをコピーしたいのです。 空欄行は3行と規則的に空いています。 言葉足らずで申し訳ありません。 よろしくお願いいたします。
お礼
お礼が遅くなり申し訳ありません。 おかげさまでコピーをすることが出来ました! どうもありがとうございました。 また、次回もよろしくお願いいたします。