- ベストアンサー
エクセルで顧客番号を業種+エリアでナンバリングする方法は?
- エクセルを利用して、顧客番号を業種とエリアでナンバリングする方法について教えてください。
- エクセルの別シートで管理されているジャンル、エリア、営業担当の情報を使用して顧客番号を自動でナンバリングしたいです。
- 例えば、ジャンルが医療、エリアが港区、営業担当がAさんの場合、顧客番号は「221125050301-1」となるようにしたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
=TEXT($A2,"eemmdd")&MID($B2,4,2)&MID($C2,4,2)&MID($D2,4,2)&"-"&SUMPRODUCT(($A$2:$A2=$A2)*($B$2:$B2=$B2)*($C$2:$C2=$C2)*($D$2:$D2=$D2)) ナンバリングの桁数を設定するなら =TEXT($A2,"eemmdd")&MID($B2,4,2)&MID($C2,4,2)&MID($D2,4,2)&"-"&TEXT(SUMPRODUCT(($A$2:$A2=$A2)*($B$2:$B2=$B2)*($C$2:$C2=$C2)*($D$2:$D2=$D2)),"00")
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
この質問は表現が不完全だ。 それは 日付をどういう風に入れようとしているのか明確にしてないからだ。 =TODAY()関数は、入力日が変わると日付が当日に変わってしまうから扱いにくいこと判りますか。 VBAなどならその点は心配ないのだが。 それで=TODATY()を使日付を入れるにしても、表のレイアウトなどをどうするのか。 D列なりに日付を毎行入れさせる手もあるが、毎行入れさせないとなると、どうするかな。日付の後戻りがないなら、MAXででもとるかな。 E2は =TEXT(MAX($D$2:D2),"eemmdd")&A2&B2&C2&"-" (連番部以外) 2010/11/29 05 03 01 2010/11/25 221125050301- 1 221125050301-1 04 03 02 221125040302- 2 221125040302-2 05 02 01 221125050201- 3 221125050201-3 05 03 01 2010/11/28 221128050301- 1 221128050301-1 04 03 02 221128040302- 2 221128040302-2 05 02 01 2010/12/1 221201050201- 1 221201050201-1 連番にするため F2に=COUNTIF($E$2:$E2,TEXT(MAX($D$2:D2),"eemmdd")&"*") G2にE列とF列結合 =E2&F2 ーーー VBAでは A1に操作する日を都度入れて、シートを変えないで入力するとして C列が変化するとき(最後にC列を入力するとして)をデータの決定として、J列に番号をセットするとして Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 Then r = Target.Row n = WorksheetFunction.CountIf(Range("j2:j" & (r - 1)), Format(Cells(1, "A"), "eemmdd") & "*") + 1 c = "'" & Format(Cells(1, "A"), "eemmdd") & Cells(r, "A") & Cells(r, "B") & Cells(r, "C") & "-" & n Cells(r, "J") = c End If End Sub 日付部分以外で日付と同じ文字列(例221130)が出てこないか心配だが、質問の場合のコード仕様が不明でなんともいえない。 2010/12/2 <--A1セル。各作業日で変わる。下記では4回変えた 05 03 01 221129050301-1 04 03 02 221129040302-2 05 02 01 221129050201-3 05 03 01 221130050301-1 04 03 02 221130040302-2 05 02 03 221130050203-3 05 02 04 221201050204-1 05 02 02 221201050202-2 05 02 04 221202050204-1 日付を後戻りさせて入力してもおかしくはならないはず。 このように難しい点のある質問だと思う。
お礼
ありがとうございました。
補足
大変申し訳ございません。 エクセル素人、OKWAVE初質問にて、 何卒お許しくださいませ。 何とか解決できました。 ありがとうございました。
》 エクセル登録日 平成22年11月25日に、…と選んだら、…となり、 》 その後…という風に自動でナンバリングしたいのです 登録日は何処に入力するのですか?それとも入力しない?
お礼
いろいろな方からもご指導いただき 何とかできるようになりました。 ありがとうございました。
補足
登録日も入力の必要があるんですね。 でもよく考えたら、 顧客番号がとても長くなすぎるので、 登録日を顧客番号に入れるのはやめます。 A:登録日 B:ジャンル C:エリア D:営業担当 のみにしたいと思います。 また、 最初の質問で、-1、-2、-3としたい件は、 同じ日に登録した顧客を分けたかったためですので 忘れて頂ければと思います。 最終的には、 A:05医療 → B:03港区 → C:01Aさん と選んだら、 D:顧客番号に自動で「050301-001」としたいです。 全く同じA、B、Cの場合も当然あるため、001から始まって。。。 なんだか自分でもよくわからなくなってきましたが、とにかく 「050301-001」を見れば、A,B、Cが分かる様にしたいです。 ご指導よろしくお願いいたします。
- KURUMITO
- ベストアンサー率42% (1835/4283)
A1セルにエクセル登録日があり、 データが2行目から下方にあるとします。 D2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTA(A2:C2)<>3,"",TEXT(A$1,"eemd")&LEFT(A2,2)&LEFT(B2,2)&LEFT(C2,2)&"-"&ROW(A1)) -1、-2、-3などとしているのはどうしてそのようになるかを理解しないままに、単にデータが下の行になればということで式がなっています。
お礼
ありがとうございました。
補足
いろいろ申し訳ございません。 エクセル素人、OKWAVE初質問にて、 何卒お許しくださいませ。 何とか解決できました。 ありがとうございました。
お礼
ありがとうございました。
補足
いろいろ申し訳ございません。 エクセル素人、OKWAVE初質問にて、 何卒お許しくださいませ。 頂いた関数をいじってたら できるようになりました! ありがとうございました。