• ベストアンサー

ExcelのVBAで自動採番したいのですが

Excel2003のVBAを利用して、例えばコマンドボタンを押した時に、下記のC6の●部分にC列の最大数を検索して自動的に「5」を採番(max+1)入力したいのです。 ただしC2の様に途中に虫食いで空欄があり、またその空欄に後日数字が入る可能性もあります。(C列は多くても40列程度) 数が多くなると採番ミスの恐れがあり、自動化したいのでよろしくお願いいたします。  |A|B|C|D 1|X|テ|1| 2|L|ス| | 3|V|レ|3| 4|Y|フ|4| 5|N|モ|2| 6|S|シ|●| 7|

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

選択した行でいいなら Sub ボタン1_Click() Dim RG As Range Set RG = ActiveCell Range("C" & RG.Row) = Application.WorksheetFunction.Max(Range("C:C")) + 1 End Sub

bluray
質問者

お礼

ありがとうございました。 思っていた通りに出来ました。 他の方のご回答でも処理できましたが、ご回答順でベストアンサーにさせて頂きました。またよろしくお願いいたします。

その他の回答 (4)

回答No.5

こんな感じかなあ Sub test()    If Cells(ActiveCell.Row, 3) = "" Then _    Cells(ActiveCell.Row, 3) = WorksheetFunction.Max(Range("C:C")) + 1 End Sub ボタンや図形を配置して 右クリック マクロの登録

bluray
質問者

お礼

ありがとうございました。 思っていた通りに出来ました。 他の方のご回答でも処理できましたので、今回は回答順で他の方をベストアンサーにさせて頂きました。またよろしくお願いいたします。

回答No.4

Q、ExcelのVBAで自動採番したいのですが・・・ A、単純に最後の番号を控えて置いてプラス1で! >C列の最大数を検索して自動的に「5」を採番(max+1)入力・・・ そんなやり方では上手くいかないのでは・・・。 ここは、セオリー通りに<最後の番号を控えて置いてプラス1>。

bluray
質問者

お礼

ご回答ありがとうございました。 他の方のご回答でうまく処理できました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

本質問では番号入力の契機が曖昧です。 自動化ならわざわざマクロで組み込まなくても普通に関数の方が簡単だと思う。 例えば、対象範囲に=IF(入力条件,MAX(対象範囲)+1,"")を設定しておけば よいと思われるが如何でしょうか。

bluray
質問者

お礼

ご回答ありがとうございました。 他の方のご回答でうまく処理できました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

マクロを実行したとき,具体的にどこが●のセルだと,どうやって判るようになっているのでしょうか。 作成例: sub macro1() range("C" & range("A65536").end(xlup).row).formulaR1C1 = "=1+MAX(R1C:R[-1]C)" end sub

bluray
質問者

お礼

ご回答ありがとうございました。 他の方のご回答でうまく処理できました。

関連するQ&A

  • Excel VBAで、空欄セルの場合に「なし」と自動的に入力するには?

    ExcelのVBAで、ある列(例えばC列)のセルでEnterキーを押したとき、 空欄の場合のみ、自動的に「無し」と入力するにはどうしたら良いでしょうか? VBA初心者です。よろしくお願いします。

  • エクセルの使用法

    以下の様な事はエクセルで簡単に出来ないのですか? シート1   1 1/19  2 3 1/24 4 1/25 5  とシート1に打ち込んだ場合にシ-ト2に以下の様に自動的にになるように。 シ-ト2 1 1/19 2 1/24 3 1/25 またシート1の空欄の数には規則性はありません。 分かる方教えて下さい。また、出来ないのであれば出来ないという回答をお願いします。

  • MySQL + PHP での自動採番

    PHP + MySQL で自動採番 複数テーブルから文字列を抽出して番号を振りたいと思っております。 具体的には以下のような形を考えているのですが、どのように記述をしてよいのか教えていただけますでしょうか? table1: +-------------+------+------+-- | ID | col1 | col2 | +-------------+------+------+-- | KW0807-0001 | A | 3323 | | KX0807-0002 | B | 1122 | | KY0807-0003 | C | 4441 | | KW0807-0004 | A | 1256 | +-------------+------+------+-- table2: +-----+------+------+-- | ID | col3 | col4 | +-----+------+------+-- | 1 | A | W | | 2 | B | X | | 3 | C | Y | | 4 | D | Z | +-----+------+------+-- table1 の「ID」 -> [K(規定値)] + [col1で入力した値よりcol4を抽出] + 入力した年 (08) + 入力した月 (07) + 0000から始まる4桁の連番 と、したく思います。 ご回答にあたって足りない情報があればご指摘下さい。 よろしくお願い致します。

    • 締切済み
    • PHP
  • エクセルで不完全項目を除外して計算したい

    うまく言い表せないのですが、 例えば A列に数値a(例えば来店時間) B列に数値b (出店時間) がありC列=b-a  滞在時間 とします。 c列の平均値を求めたいので、c列の下に average(C1:C100)をつくって平均値を求めます。しかし、A,B に空欄がいくつかあります。空欄があるとC=0となって平均に含まれてしまいますが、AB空欄のものは平均から除外したいのです。  つまり虫食い状のAのデータの中で、有効なデータだけのCの平均値を取りたいのです。どのように計算式を作ったらよいでしょうか。

  • Excel Vba でデータの範囲を知るには?

    Excelを使用していますが、マクロ(VBA)で、シートのデータの範囲を知るにはどうすればよいのでしょうか。  印刷プレビューを行うと、自動的にページ数が求めらていますが、これは、シートのデータの範囲(列及び行の最大値)を判別しているからできるのだと思います。  これを、VBAで行、及び列のMAX値を取得したいのですが、そのメソッド(プロパティ)を知りたいのです。  どなたかご教授ください。

  • エクセルのVBAについて

    エクセルのVBAに詳しい方がいらっしゃれば、助けて頂きたい事がございます! ・Sheet1(以下S1と記載)の、1列目に、A1セルより、項目として、「ID、地区、住所、電話番号、資産名、耐用年数、取得日」が記載(=S1は項目のみ) ・Sheet2(以下S2と記載)の、1列目に、A1セルより、項目(住所、設備、資産名、区域、備考)と2列目以降にそのデータが記載 【やりたいこと】 S1の項目と完全一致するS2の項目(上記では、住所、資産名のみ)の2列目以降のデータを、S1の2列目以降に張り付ける作業を自動化するコードを書きたいのですが、上手くいかず・・・ どなたかコードを記載して頂けないでしょうか?また下記の前提を考慮したコードであると、なお助かります! 【前提】 ・「S1の項目が空欄にぶつかったら、検索を終了」という事をループに入れる(S1の項目数は変動するため) ・「S2の2列目以降の全てのデータをS1に張り付ける」という事をコードに入れる(S2の2列目以降のデータの列数も変動する且つ途中に空欄も含むため) ・S1の「地区」に、S2の「区域」を反映できるようなコードを入れる 宜しくお願いいたします_(._.)_

  • Excelマクロ等(通番自動付与・上書保存)

    共有の台帳として使用するExcel(複数シート・書式は全て同一)に、 複数のユーザーがデータを登録し、保存時に、A列に下記のような番号を振りたいのですが、 どのようなマクロで出来るでしょうか? (マクロ以外の方法でも全く構いませんが、関数だと循環参照してしまい、うまくいきませんでした…。) <Sheet1>    [A] [B] [C] [D] [1] No. 名称 [2] 1 りんご [3] 4 みかん [4] 5 メロン [5] 4 みかん [6] 4 みかん [7] 9 いちご [8] ○ [9] <Sheet2>    [A] [B] [C] [D] [1] No. 名称 [2] 2 キャベツ [3] 6 ニンジン [4] 6 ニンジン [5] 6 ニンジン [6] 8 レタス [7] [8] [9] <Sheet3>    [A] [B] [C] [D] [1] No. 名称 [2] 3 豚肉 [3] 7 牛肉 [4] 3 豚肉 [5] 3 豚肉 [6] 3 豚肉 [7] △ [8] [9] B列(およびC列以降)にデータを入力して、マクロを実行するとA列に番号が自動反映され、 上書き保存されるというイメージです。 番号の振り方ですが、 (1)既出の場合は、前回の入力時と同じ番号をA列に入力します。(これは手入力で構いません。) (2)新しいデータの場合は、<Sheet1>~<Sheet3>のA列に保存済みの最大値+1の値を、 その行のA列に新たに採番します。 ※(1)と(2)の入力先を別々にした方が良ければ、A列でなくても構いません。  例えば(1)の場合はB列に手入力して、(2)の場合はC列に自動反映、関数でA列に反映という形でも。 具体的には、 ○の箇所に「バナナ」を入力した場合、(2)の状況なので10を採番します。 その次に△の箇所に「鶏肉」を入力した場合も、(2)の状況なので11を採番します。 (△の箇所が「牛肉」であれば、A列は7です。) ・もし可能であれば、2行以上を一気に入力してから採番する場合も考えられるので、  複数行まとめて採番・保存出来ると有難いです。(でも必須ではありません。) ・1シートに統合すれば良いのですが、ユーザーが多く、複数シートに分けています。 マクロは初心者のため、大変恐縮ですが宜しくお願い致します。 質問文に不備・不足がありましたら、ご指摘ください。

  • セルに自動的入力させたい

    EXCEL2010を使用しています。 「表1」のような表があるのですが、D列が「子」である、C列のオレンジの部分が空欄なので 手動で入力しないといけません。 条件は装置名が同じである「親」と同じ日付が入ります。 なので結果は「表2」のようになります。 これを関数かVBAで自動的に入力されるようにできないでしょうか? もし関数できたとしてもC列には予め数字が入っている行があるので 空欄に飛び飛びで数式を設定するしかないでしょうか? 何か良い方法があればよろしくお願いします。

  • エクセルで%に応じて自動で採点する方法

    エクセルでA~D列まで枠を作って以下の様な計算を 行いたいです。 A列 分母 B列 分子 C列 パーセンテージ(少数第2点以下切り捨て) D列 C列に応じた得点 C列が100%ならD列は5点、以下、98%以上は4点、96%以上3点、94%以上2点、92%以上1点 92%未満は0点と自動で計算するにはどうしたら良いですか? また、A~E列に各列のセルに○印を書いたら、その丸の数をカウントして そのマルの数をF列に数値化(マルが5個あったら「5」、3個だったら「3」)と するにはどうしたらいいですか?

  • エクセルで列の空白を数えるには?

     A B C 1 * 2   3 2 4 *   5 1 6 * セルに*マークを記入してある、間隔の空欄を計算したいのですが。どうやってやりますか? 空欄の最後に空白が連続した数を表示させたいです。 B,C・・・列も同様に同じ計算をします。

専門家に質問してみよう