- 締切済み
AW,AX列の特定行にのみデータがあります。残りは空白
AW,AX列の特定行にのみデータがあります。残りは空白です イメージはこんな感じ AW AX 100 101たわし 空白 空白 空白 空白 空白 空白 空白 空白 空白 空白 空白 空白 200 201ナイフ 空白 空白 空白 空白 普段は100、101たわしから空白全体を選択してCtrl+Dでコピーしてます。 同様に200、201ナイフ以降も永遠と空白とデータが繰り返されます。 そこで、 次のデータが入ってくるまで、コピーを繰り返すというVBAができないでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- qualheart
- ベストアンサー率41% (1451/3486)
説明不足でしたw (;´▽`A`` 記載のVBAは、マクロとして登録してください。 たとえば、ツール→マクロ→新しいマクロの記録を実行し、マクロの記録画面でOKをクリックします。そして、そのまま■をクリックしてマクロの記録を終了すると、空のマクロが登録されます。 そのあと、ツール→マクロ→Visual Basic Editorを選択し、VBを起動して、標準モジュール→Module1をダブルクリックして、空登録したマクロの中身に、記載のVBAをコピーしてください。 >EntRowには処理を繰り返す行の数を指定してください 上記は、VBAの先頭に書かれている「EntRow = 40」の「40」を繰り返し処理を行う行数に書き換えてください、という意味です。 たとえば、エクセルの行で1~100行まで繰り返したい場合は、 EntRow = 100 と書き換えてください。 このVBAは、AW列、AX列の空白のセルに対し、それより上に存在する値を入力していくというVBAになります。 なので、1~100行の途中にいくつか値が存在している場合でも、ちゃんと新しい値が存在している時点で、次のセルからは新しい値を入力していくようになっているので、「EntRow = 40」の「40」を全体的に値を入力したい行数に書き換えてくださればOKです。 例えば説明文の例のように、1行目に「100」「101たわし」が入力されており、8行目に「200」「201ナイフ」が入力されている場合に「EntRow = 10」と指定した場合は、2~7行目には、1行目の値がコピーされ、9~10行目には8行目の値がコピーされるようになっています。 マクロは、ツール→マクロ→マクロを選択し、表示された画面で登録したマクロ名を選択し[実行]をクリックすれば実行できます。 実行するときにカーソルがどのセルにあるかは、特に関係ありません。 これで分かりますでしょうか? わかりにくい説明でスイマセンw
- qualheart
- ベストアンサー率41% (1451/3486)
EntRow = 40 For n = 2 To EntRow If Cells(n, 49).Value = "" Then Cells(n, 49).Value = Cells(n - 1, 49) Cells(n, 50).Value = Cells(n - 1, 50) End If Next で、どうでしょう? EntRowには処理を繰り返す行の数を指定してください。
補足
これは、AWの100 と書いてあるところで実行すれば宜しいのでしょうか? 上の処理を貼り付けて実行しても何もおきません。 >EntRowには処理を繰り返す行の数を指定してください ここを私が理解していないのが問題でしょうか EntRowの後ろに繰り返したい回数を記入すればいいのでしょうか?