抜けがあるデータを埋めるためにうまくコピー&貼り付けしたい

Excelのファイルで今、空白セルを含めA列に5万行ぐらいのデータがあり、4万9900行ぐらいは空白セルなのですが。

起点となります4行目の文字列以外は、特に規則性もなく例えば25行目、92行目、…49911行目に、文字列が入っているとします。
まず、起点の4行目のデータをコピーしまして。そこから下の空白セルへ、コピーしたデータをどんどん貼り付けていきます。
すると、25行目には空白セルではない文字列があります。
ここで、25行目のデータをコピーし。26行目からは、4行目ではなく25行目のデータを、26行目以下の空白セルに貼り付けていきす。
そして、次の《空白セルではない文字列=92行目》に来たら、今度は92行目のデータをコピーし、また93行目以下の空白セルにデータを貼り付けて…

という流れを繰り返しまして。最後の49911行目の文字列の下は、もう空白セルしかありませんので。
50000行を区切りに、そこまで空白セルに文字列を1セルずつ貼り付けて完了する、というデータ処理を。
効率的な方法で行いたいと考えております。宜しくお願いします。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2018/02/24 16:26:08
  • 終了:2018/02/24 22:15:41

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4686ベストアンサー獲得回数19982018/02/24 17:37:39

ポイント1500pt

下記のマクロを標準モジュールにはりつけて、set_blank_cell サブルーチンを実行してください。

Function is_blank_cell(c)
    is_blank_cell = IsEmpty(c) Or c.Value = ""
End Function

Sub set_blank_cell()
    max_row = 50000
    target_col = 1      ' A列
    src_row = 4
    ActiveSheet.EnableCalculation = False
    For r = 5 To max_row
        If is_blank_cell(Cells(r, target_col)) Then
            Cells(r, target_col).Value = Cells(src_row, target_col).Value
        Else
            src_row = r
        End If
        DoEvents
    Next
    ActiveSheet.EnableCalculation = True
End Sub

そこそこ時間がかかるとは思いますが、一時間はかからないと思います。

id:moon-fondu

すごいです、1分もかかりませんでした!
ありがとうございました(^^♪

2018/02/24 22:15:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません