重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

SHEET1のD2からデータのある行までを別のシートに1から番号をつけていきたいのですが。

SHEET1
D
1 名称
2 ○○予備校
3 □□予備校
.
.
32 △△予備校

SHEET2
Q
1 空白
2 1
3 2
.
.
32 31

関数を使えばできるのですが、人によって行数が違うのでD65536まで数式を入力しなければなりません。できるだけファイルサイズを小さくしたいのでVBAを使ってできないでしょうか? また既にVBAが組まれているのでそこに追加する形になりますが、既存のVBAには影響はないでしょうか?

A 回答 (2件)

設問のとおりですと、次のようなコードになると思います。



データは、Sheet1!D2からで、番号付与は、Sheet2!Q2からとします。
何回実行しても、現データで更新します。(Q1は、空欄にします。)

> 既存のVBAには影響はないでしょうか?

「番号付与」という同じ名前のプロシージャーがなければOKです。
もし、ある場合は、名前を適当に変更すればOKです。。

操作手順は、
1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
 (既存のコードの最終行以降に追加してもOKです。)
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.実行するときは、Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で
 「番号付与」を指定し、[実行]ボタンを押します。

・ どのシートをアクティブにして実行しても構いません。
・ データに途中空白があってもカウントします。

Sub 番号付与()
Dim Rw As Long
Dim Num As Long
Worksheets("Sheet2").Range("Q:Q").ClearContents '番号消去
Rw = Worksheets("Sheet1").Range("D65536").End(xlUp).Row
For Num = 1 To Rw - 1
  Worksheets("Sheet2").Range("Q" & Num + 1).Value = Num
Next Num
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。解決しました。操作手順まで記載して頂いたので素人の私にはとてもわかり易く助かりました。

お礼日時:2003/05/05 15:54

補足をお願いしたいのですが。


>関数を使えばできるのですが
どういう関数ですか。
>人によって行数が違うので
人とは?。
>できるだけファイルサイズを小さくしたいので
不用の行まで、関数式を設定したくないと言うこと?
○VBAを使って、各シートのある列の最終行が知り得れば良いのでしょうか?
>また既にVBAが組まれているのでそこに追加する形になりますが、既存のVBAには影響はないでしょうか?
別モジュールにすれば、他のモジュールの動作には影響ないでしょう。
>シート1で○○予備校・・・が出てきているが、Sheet2では関係ないのですか。
VLOOKUPで予備校名を引くのではないでしょうね?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!