- ベストアンサー
Excel2007でマクロ作成中!A列にB列の番号を入れる方法
- Excel2007でマクロ作成中です。A列にB列の番号の入っているセル(空白セル以外の)の数だけ番号を入力したいのですが、うまく出来ません。
- 下記のコードではうまく行番号を入力することができませんでした。
- どうすればうまく行番号を入力することができるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
見出し:1行目 データ:2行目~~ '------------------------------------- Sub test() Dim R As Long Dim No As Long ActiveSheet.Unprotect For R = 2 To Cells(Rows.Count, "B").End(xlUp).Row If Cells(R, "B").Value <> "" Then No = No + 1 Cells(R, "A").Value = No End If Next R ActiveSheet.Protect End Sub '--------------------------------------------- Protectの引数は省略。 以上です。
その他の回答 (2)
- bin-chan
- ベストアンサー率33% (1403/4213)
#1です。すみません、タイトルに書いてありましたね。 うまく行かないのは、for文が「B列の番号の入っているセル」までしか回らないこと。 正しくは「B列の番号の入っているセルの行」まで回すこと。 試験してないので、調整が必要かも。 fCnt=Sheets("一覧").Range("B65536").End(xlUp).Row でもこのままだとB列の最後まで、A列連番が振られるので、連番用変数を追加で宣言し、 IF文でセルBがNULLでない時、1加算して設定すればよいでしょう。 あと、iはlongに変更してくださいね。32768行以降が扱えないから。 Sub 行番号を入れる2() ’インデント(字下げ)明示のため、スペースは全角です。コピペの際は注意 Dim i As long Dim fCnt As Long Dim nCount As Long 'シートが保護されていたら保護を解除 If ActiveSheet.ProtectContents = True Then ActiveSheet.Unprotect End If 'B列で入力されているセルの最終行を求める。 fCnt=Sheets("一覧").Range("B65536").End(xlUp).Row nCount = 0 For i = 1 To fCnt if isnull(Worksheets("一覧").Cells(i + 3, 2)) = false then nCount = nCount + 1 Worksheets("一覧").Cells(i + 3, 1).Value = nCount endif Next i End Sub
補足
お手数掛けます。今ご指導いただいたコードを実行しましたが。B列が空白のセルまでナンバーがはいってしまいます。原因を究明中ですが、わかりません。お助けください。
- bin-chan
- ベストアンサー率33% (1403/4213)
下記のシートの場合、ご希望のできあがり具合は、次のどれ? A B 1 あ 2 3 い 1) A B 1 2 あ 2 3 2 い 2) A B 1 1 あ 2 3 2 い
補足
お手数掛けます、B列顧客番号のある人だけ、A列に1から番号を振りたいです。 B列の行は不特定の数で増減があります。 以上よろしくお願いします。 A B C 整理No 顧客No 名前 1 19 2 21 3 22
お礼
ありがとうございましたあ。思う通りに出来ました。感謝いたします。