Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5498 / 76732 ←次へ | 前へ→

【76847】連番設定
質問  gg56  - 15/3/24(火) 8:20 -

引用なし
パスワード
   (1)A列にデータが入っています。(ex.A,B,C,D,あるいは空欄)
(2)データは同じ値が連続して入力されていたり、ばらばらになって入力されていたりします。

(希望する動作)同じデータが連続している場合にはB列に1から連番を付ける。
連続したデータが途切れたり、変わったりした場合は次のデータのある行から1から新たに連番を付ける。
(よってデータが不連続な場合は番号は1となります。)

(質問)下のコードで動作はしますが、もっとスマートな書き方はないものでしょうか?
  
Sub Test()
Dim i As Integer
  On Error Resume Next
  For i = 1 To 30 '試しに1〜30行目まで。
   If Cells(i, 1) <> Cells(i + 1, 1) Then 'A列当該行とその直下行のデータが異なっていればB列に1を置く。
    Cells(i + 1, 2) = "1"
   End If
   If Cells(i, 2) = "" And (Cells(i - 1, 2) = "1" Or Cells(i - 1, 2) <> "") Then 'B列当該行=空欄でさらにその直上行=1、または空欄以外の場合
    Cells(i, 2) = Cells(i - 1, 2).Value + 1 'B列当該行に直上行の数値に+1した数値を入力する。
   ElseIf Cells(i, 1) = "" Then 'A列当該行=空欄の場合は空欄とする。  
    Cells(i, 2) = "" 
   End If
  Next i
End Sub

193 hits

【76847】連番設定 gg56 15/3/24(火) 8:20 質問[未読]
【76848】Re:連番設定 β 15/3/24(火) 9:22 発言[未読]
【76850】Re:連番設定 gg56 15/3/24(火) 12:42 お礼[未読]

5498 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free