質問するログイン新規登録
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1007閲覧

結合セルB列へ連番を振っていき、E列に空白セルがあれば連番を振り直したいです。

chanken

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/07/14 00:34

0

0

結合セルB列へ連番を振っていき、E列に空白セルがあれば連番を振り直したいです。
現状のコードでは開始行から終了行まで連番を振り続けてしまうのでどう条件分岐を指定してあげてやればいいわからないです。
写真が実行したい動きです。
イメージ説明

sub 結合セルに連番を入力する()
Dim i As Integer, myRow AS Integer, myRange As Range

myRow = Range("B2").CurrentRegion.Rows.Count + 1
Set myRange = Range("B2")
i = 1
Do While myRange.Row <= myRow
myRange.Value = i
Set myRange = myRange.Offset(1).MergeArea
i = i + 1
Loop
Set myRange = Nothing

END Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

現状では単純にiをカウントアップし続けていますが、条件を満たした場合にリセットしてあげればいいと思います。

下記の例では連番を出力しようとしている行のE列が空欄ならカウンターをリセットする判定を行っています。

VBA

1Do While myRange.Row <= myRow 2 If Cells(myRange.Row, "E") = "" Then 3 'E列が空欄ならカウンターリセットし、連番出力しない 4 i = 0 5 Else 6 '連番出力 7 myRange.Value = i 8 End If 9 10 Set myRange = myRange.Offset(1).MergeArea 11 i = i + 1 12Loop

この例では連結セルの先頭行でしかE列の空欄チェックを行っていません。
連結セルの先頭行以外でE列に空欄があった場合にも行番号をリセットしたいのであれば、判定部分にもう少し手を加える必要があります。

参考になれば幸いです。

投稿2017/07/14 00:55

編集2017/07/14 01:07
jawa

総合スコア3021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問