[[20120529092211]] 『空白セルに一つ上の値をコピーするマクロ』(RINA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『空白セルに一つ上の値をコピーするマクロ』(RINA)

マクロについてまだまだ勉強不足のため、ご教示お願い致します。

B11列からO11列まで文字列・名前・日付等が不規則に入っており、J列の最終行までの
空白に一つ上のセルをコピー という処理の為、
ネットより引用した下記マクロを使用し、選択したセルごとの処理を行っています。

Sub CopyCell_Down()

 '連続データの中に空白があったとき、上の値をコピーして
 '下の空白セルを埋める処理
 '現在選択中の列のみが対象
    Dim i As Long
    Dim myCol As Long               '現在の列位置
    Dim startRow As Long            '開始行番号
    Dim Ccnt As Long                '現在の列の行数

    myCol = ActiveCell.Column
    startRow = 11                    '★11行目から開始
    With ActiveSheet
        Ccnt = .Columns(myCol).CurrentRegion.Rows.Count
          For i = startRow To Cells(Rows.Count, 10).End(xlUp).Row
            If .Cells(i, myCol).Value = "" Then
                '上のセルの値を入力
                .Cells(i, myCol).Value = .Cells(i - 1, myCol).Value
            End If
        Next i
    End With
End Sub

 @アクティブになっているセル指定からB列からO列まで一回で指定することは
 出来ないでしょうか?
 A一列(C列に)「’5/29」という形式で日付が入っており、マクロを実行すると
 5月29日でコピーされます。統一した値でコピーすることは出来ないでしょうか?

 現在は一つの列ごと、日付は手作業で、形式を選択しての貼り付け(値のみ)を
 しておりますが、ファイルが毎日10以上ある為、簡素化できないかと質問させて
 いただきました。
 何卒宜しくお願い致します。

 B11からJの最終行
 ということなら、ループ無で

 Sub test()
    With Range("b11", Range("j" & Rows.Count).End(xlUp))
        On Error Resume Next
        .SpecialCells(4).Formula = "=r[-1]c"
        On Error GoTo 0
        .Value = .Value
    End With
End Sub
(seiya)

 早速のご回答有難うございます。

 当方説明が悪かったようで、再度質問させてください。

 上記試してみたところ、B11からJの最終行を範囲指定してコピー
 上手くいきましたが、データはO列まで入っており、K〜O列がコピー
 出来ませんでした。
 
 なお、こちらは試してから出てきてしまった質問なのですが、
 D・E列は11行目が空行のため、コピーされなくて大丈夫なのですが、
 10行目をコピーしてくれたようです。
 範囲を解除する、もしくはコピー出来なくするにはどうしたらよいでしょうか?

 説明不足で申し訳ございません。
 再度お知恵を貸していただきたく、お願いいたします。

(RINA)


 > D・E列は11行目が空行のため、コピーされなくて大丈夫なのですが、
 >10行目をコピーしてくれたようです。
 の意味がよくわからいけど、
 こういうことですか?

 Sub test()
    With Range("b12:o" & Range("j" & Rows.Count).End(xlUp).Row)
        On Error Resume Next
        .SpecialCells(4).Formula = "=r[-1]c"
        On Error GoTo 0
        .Value = .Value
    End With
End Sub
(seiya)

 (seiya)様
 何度も有難うございます。
 やっぱり説明下手でしたね。

 上記試してみたところ、
 @日付がC11は「’4/27」C12より下は「4月27日」で表示されてしまう。
 AD・E列はもともと時間を入れる設定となっているのか、D11・E11は空白、D12・E12より下は
 「0:00」と表示されました。

 > D・E列は11行目が空行のため、コピーされなくて大丈夫なのですが、
 >10行目をコピーしてくれたようです。
 この10行目とは表の見出しとなり現在D=開始 E=終了と入っており、一回目のマクロでは
 この文言がコピーされてしまいました。(データ未記入のセルのため)

 最初のマクロでD列・E列はコピー対象としない設定に出来れば・・と思うのですが。。
 ここまでお知恵を貸していただけたので、自分でも少し試してみようと思います。
 有難うございます。
 (RINA)


 >@日付がC11は「’4/27」C12より下は「4月27日」で表示されてしまう。
 これは、その列のセルの書式設定をC11の設定に合わせる。

 こういうこと?

  Sub test()
    With Range("b12:o" & Range("j" & Rows.Count).End(xlUp).Row)
        On Error Resume Next
        Intersect(Range("a:c,f:o"), .Cells).SpecialCells(4).Formula = "=r[-1]c"
        On Error GoTo 0
        .Value = .Value
    End With
End Sub
(seiya)

 (seiya)様

 つたない説明でここまで!!
 本当に有難うございます。無事やりたいことがスムーズに出来ました!!

 自分にはいただいたマクロに
 Range("D11:E11").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
 をつけてデータを削除する方法しか思いつきませんでした。。

 何度もお手数をお掛けしてすみませんでした。
 今後もこちらのHPで勉強させていただこうと思った次第です。

 有難うございました。
 (RINA)


 私の読解力は非常に乏しいので、詳しい(具体的な)説明が無いとトンチンカンな回答になります。
 気にしないでください。
 (seiya)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.