[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで条件付き自動採番』(ぼっち)
すみません、教えてください。
ユーザーフォームからデータシートに転記する際に、「絶対に重複しない番号」を作成して データシートに入力したいです。
例えばユーザーフォームのTextBox1に日付を入力し、「データA」シートのB列に
2012/10/2 2012/10/2 2012/10/1 2012/10/3 2012/10/4 2012/10/3 2012/10/4 2012/10/2
のように入力するとします。 (日付の並び順は入力するデータの内容によるので、昇順・降順のように並ぶわけではありません)
ユーザーフォームでコントロールにデータを入力して「データA」シートに転記する際、 フォーム内のTextBox1に「2012/10/2」の日付が入っていた時、
「1210020001」
のように「YYMMDD+枝番4桁」の番号を振り、データAシートのF列に入力したいです。
なので、上記例に枝番を振るとすると
B列 F列 2012/10/2 1210020001 2012/10/2 1210020002 2012/10/1 1210010001 2012/10/3 1210030001 2012/10/4 1210040001 2012/10/3 1210030002 2012/10/4 1210040002 2012/10/2 1210020003
のようになり、次にTextBox1に「2012/10/3」と入力したら 1210030003 と、該当日付の最大数値の枝番に1を足した番号を自動で採番したいです。 このように、「該当日付の中で枝番を増やしていく」というようにしたいのですが、 「データA」シートはユーザーフォームから入力した後、閲覧者が色々な条件でソート をしたりするので、「該当日付」の「最大数値の枝番」が昇順に並んでいるわけではありません
(例)このような並びになっていることもあります
B列 F列 2012/10/4 1210040002 2012/10/2 1210020003 2012/10/3 1210030001 2012/10/1 1210010001 2012/10/2 1210020002 2012/10/4 1210040001 2012/10/2 1210020001 2012/10/3 1210030002 2012/10/3 1210030003
これでTextBox1に「2012/10/2」と入力して、次の枝番の値が「0004」になるようにしたいのですが 条件がややこしくてどのように判定すればよいかわかりません…
要するに ・TextBox1の値と「データA」シートB列に入力済みの値を比較し、一致する値の中で一番大きな枝番に1を足した番号 を自動で作成したいのですがどのようにすればよいでしょうか。
自分でも分かりづらい説明だと思います… 不足部分は補いますのでよろしくお願いします。 エクセルのバージョンは2007です。
B列の日付群の中から、対象の日付の数を数える方法は?
日付が2012/10/4の場合、
数式では =countif(b:b,"2012/10/4") で2012/10/4の個数が求められますから、 =countif(b:b,"2012/10/4")+1 が求める枝番
後は、日付と絡めて書式設定すればよいと思います。
数式だと
=TEXT("2012/10/4","yymmdd")&TEXT(COUNTIF(B:B,"2012/10/4")+1,"0000")
でできそうなので、後はこれをVBAに組み込めばできそうですが・・・
ichinose
ichinose様
あっ!そうか!そうですね! 同じ日付の個数を数えればいいんですね! 最大値…に捕らわれてその発想が思いつきませんでした!! やってみます!!
(ぼっち)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.