VBAを勉強中の初心者です。 For Nextの使い方をお教えいただきたいです。

Visual Basic | Excel107閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

0

ThanksImg質問者からのお礼コメント

みなさんこんな初心者の質問に丁寧にお答えいただきありがとうございました!! 1個1個処理することしか思いつかなかったので、ベスアに選ばさせていただきました。

お礼日時:8/2 0:54

その他の回答(3件)

0

変数の名前の付け方が・・・ GetNameでこれが主人公になっているので連番のほうを主人公に、 連番はA列の自分と自分の下のセルが違うときだけインクリメントすればそれでいいですね。変数名はGetNum、 Sub sample() Dim LastRow As Long Dim GetNum As Long Dim cnt As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row GetNum = 1 '開始NO. For cnt = 2 To LastRow Cells(cnt, 2) = GetNum If Cells(cnt, 1) <> Cells(cnt + 1, 1) Then GetNum = GetNum + 1 End If Next cnt End Sub

画像
0

この質問でのポイントは、A列の最初の1000がA1にあるのか、それともA2にあるのかです。このポイントの違いによって記述が変わってきます。 もし、A1からであれば以下のFor Next文が書けます。 Sub Sample() Dim i As Long, n As Long n = 1 Range("B1") = 1 For i = 2 To Range("A" & Rows.Count).End(xlUp).Row If Range("A" & i) <> Range("A" & i).Offset(-1).Value Then n = n + 1 End If Range("B" & i) = n Next i End Sub B列の値が最初から「1」と分かっているのであれば、Do While文の方が書き易いかもしれません。 Sub Sample() Dim i As Long, n As Long Dim EndRow As Long n = 1: i = 1 EndRow = Range("A" & Rows.Count).End(xlUp).Row Do Range("B" & i) = n If Range("A" & i) < Range("A" & i).Offset(1).Value Then n = n + 1 End If i = i + 1 Loop While i <= EndRow End Sub

0

Sub TEST() Dim LastRow As Long Dim GetName As Long Dim Cnt As Long Worksheets("Sheet1").Select Worksheets("Sheet1").Activate LastRow = Cells(Rows.Count, 1).End(xlUp).Row Cnt = 1 GetName = Cells(1, 1) For i = 1 To LastRow If GetName = Cells(i, 1) Then '控えた値と同じなら Cells(i, 2) = Cnt ’Cntを書き出し Else ’異なるなら Cnt = Cnt + 1 ’Cntを+1して Cells(i, 2) = Cnt ’Cntを書き出し GetName = Cells(i, 1) ’控えた値を書き換える End If Next i End Sub ループは一種類で、 条件:控えた値と同じか否か 同じなら ・cntを書き出すだけ 異なるのなら、 ・カウンタを更新 ・控えた値を異なる値に書き換える

Worksheets("Sheet1").Select Worksheets("Sheet1").Activate 上記に命令は無視してください。 私的に、他のシートのデータが壊れないように書き留めているだけです。 質問の内容には関係ありません(._.)φ