• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:A列にB列の空白セル以外のセルの数だけ1から番号をふりたい。)

Excel2007でマクロ作成中!A列にB列の番号を入れる方法

このQ&Aのポイント
  • Excel2007でマクロ作成中です。A列にB列の番号の入っているセル(空白セル以外の)の数だけ番号を入力したいのですが、うまく出来ません。
  • 下記のコードではうまく行番号を入力することができませんでした。
  • どうすればうまく行番号を入力することができるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.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の引数は省略。 以上です。  

aitaine
質問者

お礼

ありがとうございましたあ。思う通りに出来ました。感謝いたします。

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

#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

aitaine
質問者

補足

お手数掛けます。今ご指導いただいたコードを実行しましたが。B列が空白のセルまでナンバーがはいってしまいます。原因を究明中ですが、わかりません。お助けください。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

下記のシートの場合、ご希望のできあがり具合は、次のどれ?  A B 1  あ 2 3  い 1)  A B 1 2 あ 2 3 2 い 2)  A B 1 1 あ 2 3 2 い

aitaine
質問者

補足

お手数掛けます、B列顧客番号のある人だけ、A列に1から番号を振りたいです。 B列の行は不特定の数で増減があります。 以上よろしくお願いします。 A      B     C 整理No 顧客No 名前 1     19 2     21 3     22