• ベストアンサー

EXCELで番号を付けたい

SHEET1のD2からデータのある行までを別のシートに1から番号をつけていきたいのですが。 SHEET1 D 1 名称 2 ○○予備校 3 □□予備校 . . 32 △△予備校 SHEET2 Q 1 空白 2 1 3 2 . . 32 31 関数を使えばできるのですが、人によって行数が違うのでD65536まで数式を入力しなければなりません。できるだけファイルサイズを小さくしたいのでVBAを使ってできないでしょうか? また既にVBAが組まれているのでそこに追加する形になりますが、既存のVBAには影響はないでしょうか?

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.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

natukawa01
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル ファイルサイズ

    エクセルのファイルサイズが約15MBと非常に大きく、立ち上がり/保存が遅く、困ってます。 データを入力しているシートは41シート。データを入力している列は全シート9列。データを入力している行はシートによりばらつきがありますが、60行~4000行の範囲です。また、全シートの入力行数総計は約36000行です。 マクロはVBAは使っていない(はず)です。数式、関数も使ってません。 ここまで容量が大きくなるか?と思います。ファイルサイズを縮小する方法、どなたかご存知ないでしょうか?ご教示お願いします。

  • エクセル 列 左詰め

    よろしくお願いします。 windows excel2010です。 添付画像sheet1のようにまとまった結果を、別シートで左詰にしたいです。 sheet1の空白に見える部分は、数式が入っています。 添付画像は3行ですが、アンケート形式で行数が随時追加されるので、 フィルタで削除という方法ではなく、数式などで対応できるようにしたいと考えています。 ご回答よろしくお願いいたします。

  • エクセルの関数、VBAの使い分け

    エクセルでデータを管理しているのですが現在5つのシートで各シートが10列7000行程度データが入っていてファイルサイズが10MBを超えています。 データの行数は今後も増えていく予定で、最大行(約65000行)まで使いたいと思っているのですが、そうなるとファイルサイズが100Mぐらいになってしまいそうなのですが使用上問題はないでしょうか? 関数を多用しているのですがそれをVBAに置き換えるとファイルサイズを小さく出来るでしょうか?もし、VBAに変えた場合に使用上、関数に比べ不便が出るようなことはないでしょうか?

  • Excelで表現すると、どのような関数になりますか?

    ある数式をExcelで関数化したいのです。 よろしくお願い致します。 シートを2つ使用しており、【Sheet2】は【Sheet1】の値を参照しています。 【Sheet2】参照⇒【Sheet1】 このとき、【sheet2】が参照しているセルは 【Sheet2】1行目:=Sheet1!H4 【Sheet2】2行目:=Sheet1!H35 【Sheet2】3行目:=Sheet1!H66 と、行数が増える毎に「H列」の「行数」が"31"ずつ増加しております。 一般の数式で表現すると、xを【Sheet2】の行数として、  Sheet1!H{4+31*(x-1)} となります。 これをExcelで表現すると、どういった関数になりますか? 識者の方、ご教示よろしくお願い致します。

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • 複数シートから空白ではない行をすべて抽出

    タイトル行A1:D1、データの中身は、A2:D11の全く同じ様式のシートが複数あります。シート名はバラバラです。 全シートの空白ではない行を全て別の集計シートに抽出したいです。 空白行は抽出しません。 これを関数でどのようにつくればよいのでしょうか? 関数で無理ならVBAでお願いします。

  • Excel VBA 残りの行数を計算し、貼付けられるか、別のシートに貼り付けるかを判断し実行するマクロ

    Sheet1に二十数個の項目が列記されており、その内、必要な項目だけをコピーしてheet2に貼り付けて行きます。 一項目の行数は6行~18行とまちまちです。 必要な項目はその都度違います。 heet2の行数は50行と決まっています。 よって、あるところで50行を超えてしまいますので、Sheet3へ移動し続きを貼り付けます。 このとき、一つの項目がSheetをまたいではいけません。 (Sheet1に空白が出来てもかまいません) 要は、貼り付ける行数と残りの行数を自動で判断して、入る場合は貼付け、入らない場合はSheetを変えて貼付けるVBAのコードを具体的にご教授願いたいのです、宜しくお願いします。 Excel2000、VBAはマクロの自動記録をいじる程度のスキルです。

  • エクセルの関数について

    エクセルの関数について お世話になります。 エクセルの関数について質問をさせて頂きます。 チェック用の数式として、下記のような場合、 D2とH行に同じ数字があった場合はA2に○を この場合、 =IF(ISNA(MATCH(D2,H:H,0)),"","○") このような数式を使っております。 この数式を少しアレンジして、 D2とH行に同じ数字があった場合はA2に○を、 D2とI行に同じ数字があった場合はA2に×を、 このような数式を作りたいと考えております。 また、 I2とD列に同じ数字があった場合、J2に空白、 同じ数字が無かった場合に×が入る数式として、 [J2]=IF(ISNA(MATCH(I2,D:D,0)),"×","") このようなものを使っています。 こちらも少しアレンジをして、 I2もしくはH2とD列に同じ数字があった場合、J2に空白、 同じ数字が無かった場合に×が入る。 このような数式を作りたいと考えております。 こちらの2点、中々良い数式ができずに悩んでおります。 どなたか、エクセルの関数に詳しい方、良いアドバイスを 頂けると嬉しいです。 どうぞよろしくお願い致します。

  • Excelで空白行を削除したい

    2500行位使用しているシートのなかに、どのセルも空白になっている不要な行が300行くらい混ざっています。 この行を自動的に削除するにはどうすれば良いでしょうか。 ただ、その行のA~Eセルは空白でもFセルに値が入っているなど完全に空白でない行は削除できません。 メニュー、関数、VBAなど有れば教えてください。

専門家に質問してみよう