• ベストアンサー

エクセルで自動採番する方法

「管理対象区分(カラムA)」、「起票日(カラムB)」を使って、「ID(カラムC)」に自動採番したいのですが、効果的な関数をご教示いただけないでしょうか。 ID採番のロジックは以下の通りです。 (1)(「管理対象区分」の頭文字3桁) + (2)(「起票日」のYYYYMM) + (3)(「起票日」が同月内であれば同月の通し番号、翌月であれば「001」から振り直し) <特記事項> A. (2)について、MMが一桁の場合でも、2桁表示したい(例:1月⇒01) B. (3)について、常に3桁で表示したい ご回答いただけると幸いです。 よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! すでに回答は出ていますが・・・ 他の方法の一例です。 ↓の画像で説明させていただくと、 C2セルに =IF(A2="","",LEFT(A2,3)&TEXT(B2,"yyyymm")&TEXT(ROW(A1),"000")) という数式を入れています。 (この数式は1行目限定になります) 次にC3セルに =IF(A3="","",IF(MONTH(B3)=MONTH(B2),LEFT(A3,3)&TEXT(B3,"yyyymm")&TEXT(RIGHT(C2,3)+1,"000"),LEFT(A3,3)&TEXT(B3,"yyyymm")&TEXT(ROW($A$1),"000"))) という数式を入れて、オートフィルで下へコピーすると 画像のような感じの表になります。 以上、参考になれば幸いですが、 他に良い方法があれば軽く読み流してくださいね。m(__)m

その他の回答 (6)

noname#110252
noname#110252
回答No.7

Aについては「ユーザー定義」で「yyyy/mm/dd」にすればOKです。ただし一覧にはありませんので、「種類」の部分にフォームがありますので、そこに直接入れてください。 注意 No.1さんの回答では日付は2桁入力されていますが、できるだけ4桁で入力したほうがいいと思います。 あまり古いPCの場合、「09/8/1」と入力すると、「1997年8月1日」と表示されてしまいます。

ayaco1919
質問者

お礼

こんにちは。 お礼が遅くなり、大変申しわけないです。 丁寧な回答に大変感謝しております!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.4です! たびたびごめんなさい。 前回の画像の表は数式の訂正前の表をアップしてしまいました。 数式は間違いないと思いますので 敢えて、画像はアップしません。 画像に関しては表の並びだけを参考にしてください。 何度も失礼しました。m(__)m

ayaco1919
質問者

お礼

早急にご対応いただき、ありがとうございました! おかげさまで、教えていただいた関数で無事、成功しました。 心優しい多くの方々から返信を戴くことができ、びっくりするとともにとても感謝しています。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.5

 このような例では、一発でお望みの結果を出す数式を導くのは無理ですね。  結局、いくつかのプロセスを踏む訳ですから、端から補助列にそういう式を立てておくのが簡便かと存じます。 >ID(カラムC) とのことですが、カラムC・Dに補助列を挿入し、ID(カラムE)という考え方でいってみましょうか。 レコード1:管理対象区分(カラムA)、起票日(カラムB)、補助列1・2(カラムC・D)、ID(カラムE) C2: =LEFT(A2,3) & TEXT(B2,"yyyymm") D2: =COUNTIF(C$1:C1,C2)+1 E2: =C2 & TEXT(D2,"000") として、C2:E2 と下方向にコピーします。 ※)カラムB の「起票日」が日付順に並んでいない場合で、日付順に通し番号を付けたい場合は、E2 の式が複雑になります。

ayaco1919
質問者

お礼

こんにちは。 お礼の言葉が重複してしまいますが、短期間にご回答いただき、ありがとうございました! 大変たすかりました。

回答No.3

起票日が昇順で並んでいるとして D2セル =LEFT(A2,3) E2セル =TEXT(B2,"yyyymm") F1セル 0 F2セル =IF(E2=E1,F1+1,1) C2セル =D2&E2&TEXT(F2,"000") 添付図参照

ayaco1919
質問者

お礼

こんにわは。 お礼が大変遅くなってしまいましたが、ありがとうございました! 丁寧な回答にとても感謝しています。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

C1セルには次の式を入力して下方にオートフィルドラッグします。 日付が前後して入っていても対応できます。 =IF(COUNTA(A1:B1)<>2,"",LEFT(A1,3)&TEXT(B1,"yyyymm")&TEXT(SUMPRODUCT((YEAR(B$1:B1)=YEAR(B1))*(MONTH(B$1:B1)=MONTH(B1))*1),"000"))

ayaco1919
質問者

お礼

お礼が遅くなり、大変申し訳ありません。 迅速にご回答いただき、大変助かりました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

仮に    A       B    C 管理対象区分 起票日  採番 AAASSS    09/7/31 BBBSSS    09/8/1 ・・・・として 1)(「管理対象区分」の頭文字3桁)は =LEFT(A2,3)で求められます。 2)(「起票日」のYYYYMM) は =TEXT(B2,"yymmdd") で求められます。 ここまでは大丈夫でしょうか? 3)(「起票日」が同月内であれば同月の通し番号、翌月であれば001」から振り直し) これが厄介です。もしデータが起票日順に並んでいるのであれば   A     B    C 管理対象区分 起票日         2001/1/1 とダミーの日付として極端に小さい日付を一つ入れておく。 AAASSS    09/7/31 BBBSSS    09/8/1 =TEXT(ROW()-MATCH(DATE(YEAR(B2),MONTH(B2),0),B:B),"000") で下へコピィしてみてください。 ここまでうまく行きましたら3つの式を&でつなげると良いです。 もしデータが起票日順でなくばらばらであれば、SUMPRODCUT関数など配列関数を利用します。 この場合、データが増えていって式を沢山下へコピィした際にパソコンへの負担が増えます。

ayaco1919
質問者

お礼

こんにちは。 お礼が遅くなり、大変申し訳ありません。 迅速にご回答いただき、大変感謝しています!

関連するQ&A

  • エクセルで採番できる関数

    エクセルで自動採番できる関数式がうまくできずに困っています。 考えている採番の流れは以下のとおりです。 1.B列に日付が入ると、A列に自動採番される 2.採番の値は「年月6桁」+「-(ハイフン)」+「2桁の番号」(例:201407-01) 3.「2桁の番号」は、登録の順番ごとにカウントする(例:01,02,・・・10,11・・・) 4.「2桁の番号」は、次の月に変わると1からカウントし直す(例:201407-18、201408-01) いろいろ組み合わせて下記のようなものを作ってみたのですが、うまくできません。 A2=IF(B2="","",CONCATENATE(YEAR(B2),TEXT(MONTH(B2),"00")&"-"&TEXT(IFERROR(IF(MONTH(B1)=MONTH(B2),MOD(A1,10)+1,1),1),"00"))) うまく採番できる関数式を教えて下さい。 よろしくお願い致します。

  • Microsoft Accessで自動採番をさせたい。

    いつも大変お世話になっております。 アクセスでの質問です。 フィールドに「管理ID」があって、ここに8ケタのコードが自動採番されるようなしくみにしたいと考えています。 この管理IDは8ケタで、採番の仕組みは以下の通りです。 (1)「アイテム分類」というフィールドに入った製品によって頭2桁が決まる。 例)野菜・・・YA   果物・・・KU   鮮魚・・・SE (2)入力しているのが06年07月だったら次の4桁は「0607」になる。 ここまでで、頭の6ケタ「YA0607」などまでが決まる。 最後の2桁は、その月に発生している情報の連番をつけていきたい。 例) 06年07月に1番目に採番されたデータ→YA060701 06年07月に5番目に採番されたデータ→YA060705 という具合に・・・ これにはたくさんの要素がつまっています。 要素(1) 採番するフィールド以外のフィールド(アイテム分類)を見て、頭2文字を決めること。(ただし、規則はありますので、DBで表すことはできます) 要素(2) 現在のDATEから、年と月だけ4桁拾うこと 要素(3) 過去に発生しているレコードを抽出・カウントし、最後の数字の+1になる番号をつける ということです。 上記のようなことが可能なのでしょうか? 分かりましたら、できるだけ具体的に教えてください。よろしくお願いします。m(_ _)m

  • 【Access】区分別の採番方法

    A、B、C区分別の採番方法について なるべくシンプルな方法で出来る方法がありましたらお教えください。 何度かACCESSも作成していますが、初心者に近いので、簡単な方法だと ありがたいです。 今業務管理テーブルと区分マスタテーブルと二つのテーブルがあります。 業務管理テーブルには 【業務管理番号】【A受注番号】【B受注番号】【C受注番号】【区分】【機器名】 【001】【19000】【-】【-】【A】【SIMULATOR】 【002】【-】【-】【19000】【C】【GENERATOR】 【003】【-】【-】【19001】【C】【SIMULATOR】 【004】【19001】【-】【-】【A】【SIMULATOR】 【005】【-】【19000】【-】【B】【AMPLIFIER】 【006】【-】【19001】【-】【B】【AMPLIFIER】 区分テーブルには 【区分コード】【区分名称】 【A】【簡易点検】 【B】【精密点検】 【C】【修理】 業務管理番号は1業務ごと連番で番号を採っています。 A/B/C受注番号は各区分ごとに番号を採ります。 区分はA/B/Cのどれかです。 機器名は点検・修理の対象となる機器名が入ります。 上段の業務管理テーブルを元に入力フォームを作成し、そのフォームから区分Aを入力して登録した時に業務管理テーブルのA受注番号に1が足されるようにしたいです。区分は一つのみしか選択しません。 よろしくお願い致します。

  • エクセルの関数かマクロでの採番について

    以下の様な表があります。 A       B 201201-001 2012/01/01 201201-002 2012/01/03 201201-003 2012/01/05 201201-004 2012/01/05 201201-005 2012/01/08 201201-006 2012/01/09    ・      ・    ・      ・    ・      ・ ・A列に入力する項番はB列の日時のYYYYMM-[(1)] ・B列に入力する日付は不定日時 質問事項 [1]B列に日時が入力されたらA列に自動採番する。 [2]毎月20日になったら、A列の上記(1)を001に戻す。 [3]月が変わったらA列のMMをB列の入力月と連動させる。 こんな感じにしたいです。 A        B 201201-001 2012/01/01 201201-002 2012/01/03 201201-003 2012/01/05 201202-004 2012/02/03 ←○ 201202-005 2012/02/15 201202-006 2012/02/18 201202-001 2012/02/21 ←○ 201202-002 2012/02/29 201203-003 2012/03/01 ←○ 201203-004 2012/03/10 よろしくお願いします。

  • 文字を含むIDの自動採番

    Access2013を使っています。 IDはテキスト型で、 A00000000 っていう書式なんですが、 新規レコード作成時のイベントで、ID自動採番(連番をふる)をしたいのですが、下記だと最初の1レコード(A00000001)以降がエラーになってしまいます。 Format(Nz(DMax("ID", "T_テーブル名"), 0) + 1, "\A00000000" ) もちろん、すでにあるIDがA00000001なので、DMaxが使えないんですが、どうやって分けてやったら良いのかわかりません。 やりたい結果は、新規レコード作成時に、IDが"A"&"8ケタの最大値+1"が自動に振られて、テーブルのIDフィールドにA00000001、A00000002・・・とデータ保持したいのです。 説明が判り辛くて恐縮ですが、ご教示お願いします。

  • 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
  • ACCESS+SQL Serverで主キーを自動採番する

    ACCESS+SQL Serverで主キーを自動採番する ACCESSを独学で勉強を開始しているものです。 顧客管理のようなものを作りたいと思っているのですが、 オートナンバーではない主キー(顧客コード)を設定しているテーブルがあります。 顧客コードの構成はアルファベット1文字+数字8桁です。 そのうち、数字は西暦2桁+月2桁+日2桁+下2桁は連番です。 ACCESS2007プロジェクトで、SQL Server 2005 Express Editionへ接続しテーブルは作ってあり、既に顧客データが10件ほど入っています。 新規に顧客データを追加する際に、必要事項を入力し、登録ボタンを押した段階で顧客コードを自動生成し、重複チェックし、採番したいと考えています。 アルファベットは必要事項入力時に入力済み、日付もその日の日付を6桁設定し、とりあえず「01」と下2桁を採番して、現在のデータに同じものがないかチェックします。 そして、同じものがあれば「01」+1を繰り返しながらチェックしていくというようなコードはどのようにすればいいでしょうか? わかりづらいとは思いますが、よろしくお願いします。

  • Accessで自動採番の方法がわかりません。

    今月より弊社工場で、私が生産管理システムの構築を担当することになりました。 Accessでの構築です。また、Accessは初心者です。 質問は、受注登録時に受注登録フォーム(F_受注登録)で管理番号を自動採番したいのですが、やり方がわかりません。また、管理番号の自動採番実現のためにテーブルの手直し等ありましたらご教授願います。 管理番号の構成 MSSF-10001-1 MSSF→自社番号です。T_自社にMSSFとMSSTを登録しています。 10001→顧客番号と部署番号を結合しています。上3ケタが顧客番号、下2ケタが部署番号です。また、部署番号は顧客の部署になります。 1→枝番号です。1から順にカウントしていきます。例)MSSF-10001-1、MSSF-10001-2、MSSF-10002-1、MSSF-20001-1、MSST-30001-1 質問部分のフローと現在の進捗状況を記載します。 フロー F_受注登録を開く→受注内容を入力→受注内容登録時、管理番号を自動採番し、登録を完了する 現在作成済のテーブル、フォーム T_顧客、T_自社、T_ 受注一覧、T_部署、F_顧客登録、F_受注登録、F_受注一覧 T_顧客→顧客番号、顧客名 T_自社→自社番号、自社名 T_受注一覧→管理番号、顧客名、部署名、担当者、状態、工番、No、品番(図番)、品名、数量、納期、確定納期、出荷日、送り状番号、加工先、材料、材質、備考 T_部署→部署番号、部署名 F_顧客登録→T_顧客へ登録ができます。 F_受注登録→T_受注一覧へ登録ができます。 F_受注一覧→T_受注一覧の閲覧ができます。 ご不明な点等ありましたら、ご連絡ください。 よろしくお願いします。

  • ファイルメーカーでの自動採番

    ファイルメーカー9での質問です。 現在受発注管理を作成しており、それにあたり、 受注IDを自動生成したく、日付+連番とさせたいのですが、 その方法がわかりません。 例えば「受注日」が2008/11/22の場合は、 「20081122+連番」のような採番をしたいのですが、 MAX関数では、最終のものしかとれず、 仮に昨日受注分を入力する際には、不向きです。 この件に関し、おわかりの方がいらっしゃれば、 ご教授よろしくお願いいたします。

  • エクセルでの採番と保存方法について

    エクセルの1つのファイルに シート1~3には同じフォーマットの報告書が入っています。1はAさん用2はBさん用3はCさん用です。各自このファイルにアクセスして報告書を好きな時に作成します。 シート4にはこの報告書の管理台帳が有ります。台帳にはNO1~3が入っていて報告書の題名と報告書の作成者を入力する欄が有ります。 質問は 各自が報告書を入力し終えた時点でシート4の台帳に作られた番号NO1~3が自動採番され、報告書の所定のセルに自動でコピーされなおかつシート4の台帳には番号の後に報告書の題名と作成者氏名とが自動で入力される方法はどうやったらよいかという事です。 わかりづらい質問かもしれませんが 宜しくお願い致します。

専門家に質問してみよう