ここから本文です

VBAでエクセルA列に連番を振りなおす方法を教えてください!! 仕事でお客...

ode********さん

2012/3/611:20:16

VBAでエクセルA列に連番を振りなおす方法を教えてください!!

仕事でお客さんのID・IDの追加日・会社名・部署名をエクセルにまとめているんですが
VBAも初心者でどうしていいかわかりません。

状況としては、データは全て4行目から入力していて、B列にお客さんの顧客ID・C列に新規ID登録された日・D列に会社名・E列には部署名が入力されていて、A列にこの顧客の数だけNoが振ってあります。

A B C D
1 ID 社名 部署
2 ID 社名 部署
3 ID 社名 部署

ただ、結構日替わりで新しくまた追加されることもあれば削除になることもあります。問題なのは削除の際は行ごと消すのですが、その際に番号も1の次が3になったりバラバラになってしまいます。

それをまた1~・・・最後まで振りなおすようにしたいのですが、どのようにしていいかが分からないです。

自分で色々調べてみたのですが、なかなか見つからず(私の調べ方も悪いかもしれないですが)皆さんのお力をお借りしたいです。
イメージに近いところだと、下記のようなマクロを試しに組んでみたのですが、これだと新規にお客さんを登録する際に、A列の最後の数+1の番号にするようになっているので、特定の行までNoが入ってしまうことになるので使えないです。

分からないなら使うな!と一喝されてしまいそうですが、どうかよろしくお願いいたします。

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Range("A4", Range("A65536").End(xlUp)).Count < 450 Then
Range("A4", "A450").FormulaLocal = "=ROW()-3"
End If
Application.EnableEvents = True
End Sub

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
9,165
回答数:
3

違反報告

ベストアンサーに選ばれた回答

tss********さん

2012/3/616:45:37

B列で最終行判定を行い
B列が入力されているだけ
A列の4行目から連番を振る

Private Sub Worksheet_Calculate()

Dim maxrow As Double
Dim i As Double

Application.EnableEvents = False

maxrow = Cells(Rows.Count, 2).End(xlUp).Row

For i = 4 To maxrow

Cells(i, 1) = i - 3

Next i

Application.EnableEvents = True

End Sub


こんな感じでどうでしょう?

Private Sub Worksheet_Calculate()
を理解して使用しているのでしたら
これでいけると思いますが。。。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

kei********さん

リクエストマッチ

2012/3/709:57:35

こんにちは~^^

Range("A4", Cells(Rows.Count, 2).End(xlUp).Offset(, -1)).Formula = "=ROW()-3"
これだけでokです^^

mah********さん

2012/3/612:25:35

>1~・・・最後まで振りなおすようにしたいのですが
例えば、
VBAによるセルの操作を考えてみてください。
セルの位置は変数を使えばループしながら移動できます。

"=ROW()-3"式で番号を振ってくれる、でなくてセルを操作して振りなおすプログラムにする
http://excelvba.pc-users.net/fol6/6_3.html
繰り返しさせます。

セル(xx、yy)は変数で指定できるので、
1列目、1行目、に位置付けて、ループで、
1列目、2行目、
1列目、3行目、
・・・
と変えていく。
そこでA列1つ上のセルの値と同じかどうかを判断して+1するかどうかを決める。

OFFSETを使ってもいいです。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる