• 締切済み

エクセルで顧客名簿  通し番号とその例外

エクセルで顧客名簿を作っています。 Aに顧客の通し番号 Bにお客さんの名前を入れるとして、 でも二度目以降のお客さんのときには (つまり前と同じ名前を入力したとき)、 前と同じ通し番号の後ろに -1 とか -2 とかつけて 何回リピートしてるかわかるようにしたいんですけど、 どうしたらいいでしょうか? ちなみに通し番号自体も、 B以降になにか入力されたら 自動的に入るようにしたいです。 よろしくお願いいたします。

みんなの回答

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

単純にするためB列を独立させた。 A列  B列  C列 番号 サブ 氏名 1 山田 2 下村 1 2 山田 1 3 山田 3 大川 1 4 山田 3 2 大川 1 5 山田 A2は 式 =IF(C2="","",(IF(COUNTIF($C$2:C2,C2)=1,MAX($A$1:A1)+1,INDEX($A$1:$A$100,MATCH(C2,$C$1:$C$100,0),1)))) B2は =IF(C2="","",IF(COUNTIF($C$2:C2,C2)=1,"",COUNTIF($C$2:C2,C2))) C列は順次上から氏名入力する。

noname#79209
noname#79209
回答No.4

#3です。 ゴメンナサイ、余計なことを書きました。 「検証」はしてます。 なお、A列を「00001」と表示したければ、 A3は =TEXT($C3,"00000")&IF(COUNTIF($B$2:$B3,$B3)>1,"-"&COUNTIF($B$2:$B3,$B3)-1,"") としてください。

noname#79209
noname#79209
回答No.3

COUNTIF関数を使って2以上の顧客だったら、 もう一度、COUNTIF関数でカウント数を出せば 2回目なら「2」3回目なら「3」が算出できるハズです。 ただ、VLOOKUP関数を使いたいので、    A    B    C 1 通し番号 氏名   番号ワーク 2 1    山田太郎    1 3 2    鈴木花子    2 4 1-1  山田太郎    1 とします。 A2とC2は、それぞれ1を入力しておきます。 A列は左寄せを設定しておき、 A3に =$C3&IF(COUNTIF($B$2:$B3,$B3)>1,"-"&COUNTIF($B$2:$B3,$B3)-1,"") C3に、 =IF(OR($B3="",ISBLANK($B3)),"",IF(COUNTIF($B$2:$B2,$B3)=0,MAX($C$2:$C2)+1,VLOOKUP($B3,$B$2:$C2,2,FALSE))) で、いかがでしょう。 C列の表示がわ煩わしければ、C列の幅をゼロにしてしまえば、表示、印刷されません。 検証はしてませんが...

回答No.2

完成途中ですが、こういう数式はいかがでしょうか。 =IF(B1="","",IF(COUNTIF($B$1:$B1,B1)>=2,ROWS($A$1:$A1)&-1,ROWS($A$1:$A1))) この数式だと、B列に顧客名が入った時点でA列(数式入力セル)に通し番号がつきます。 また、顧客名がいままで入力されたものだと番号の後ろに”-1”がつきます。 ちなみに数式はA1に入力する例です。A1に入力した後はオートフィルでコピーすればいいです。 もしA1以降のセルからはじめる場合は、COUNTIF・ROWSの行番号をはじめるセルの行番号に変えて入力してください。 問題点としては、 現段階のこの数式では3回目以降の顧客にも”-1”がつき、 リピート回数を見ためで判断するのは難しいと思います。 まだ完成途中で投稿して申し訳ありませんが、何かの参考にしていただければいいと思います。

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

次の方法は如何でしょうか。 見出し行あり、A2は'00001を固定開始番号(手入力)、A3セルに次の数式を入力して必要分下方向にコピーして下さい。 =IF(B3<>"",IF(COUNTIF($B$2:B2,B3),TEXT(INDEX($A$2:A2,MATCH(B3,$B$2:B2,0)),"00000")&"-"&COUNTIF($B$2:B2,B3),TEXT(COUNTIF($A$2:A2,"<>*-*")+1,"00000")),"")

関連するQ&A

専門家に質問してみよう