• ベストアンサー

Excelで人数カウントをしたいのですが、、

Excel2002を使用しています。 まだ初心者で関数などあまりわかりません。 一生懸命考えてますが、なかなかいい案が思いつかないので どうかどうかよろしくお願いいたします! --------------------------------------- 社員の名前が1000行ぐらいに渡って入っています。 そこには同じ名前が何度か出てきます(連続ではなくとびとびで)。 その場合、たとえば田中さんだったら 一番最初に田中とでてくる行の隣のセルだけに 1とカウントしたいのです。 たとえば下記のような感じです。 最終的には人数の合計を出したいのです・・・ ------------------------------------   A  B 1  名前 人数 2 田中 1 3 鈴木 1 4 田中 5 山本 1 6 鈴木 ------------------------------------ 同じ名前が連続のときであれば、IF(A2=A1,\"\",1) という式を思いついたのですが、それだと 離れてまた登場したときに、同じ名前に1が入ってしまいます。 何かいい方法、関数などございましたら、 ぜひぜひお教えください!! よろしくお願いいたします。

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

  • ベストアンサー
  • crazy_dog
  • ベストアンサー率37% (148/391)
回答No.5

更に… #1です。 ソートして数えるんじゃダメですか? まず、例の名前の前にセルを1列追加します。そこに1から順番に最後まで通し番号を入れておきます。(オートフィルで簡単に作れます。)以下のように。   A  B 1 番号 名前 2  1  田中 3  2  鈴木 4  3  田中 5  4  山本 6  5  鈴木 それから、A2~B6(データの最終)までを選択し、「データ」-「並べ替え」でB列で並べ替えます。 そうすると同じ名前の人が集まってきますので、C2に =if(B2=B1,c1+1,1) と入力していきましょう。1番から次の名前の人まで連番を付けてくれます。 最初に通し番号をつけているので、並べ替えで元の順番に戻ります。(今度はA2からC6(最後まで)をA列で並べ替え) どうでしょう?

その他の回答 (8)

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

#4のご回答とやや違うようですが (テストデータ) A列A2よりA8に下記データを入れる。 a s a c d a c (演算式) B2に=IF(ISERROR(VLOOKUP(A2,A3:$A$7,1,FALSE)),1,0) といれ、下に複写する。(上記演算式は無理に改行されますが、正しくは1行です。) (結果)B2以下下記の通りになるので 0 1 0 1 1 0 0 B9に=sum(B2:B8)を入れて3と出る。 最初のaの分は実は1であるので、3+1=4が正解です。 a,s,c,dの4つです。演算式で、表のA3:$A$7などの表の終わりを絶対番地にして、固定するのがミソです。

marikoro
質問者

お礼

大変お礼が遅くなって申し訳ございません。 また皆様ありがとうございました。 ここであわせてお礼申し上げます。 皆様のおかげで助かりました!!!感謝しています。

  • hiromuy
  • ベストアンサー率27% (103/370)
回答No.8

重複する名前を考慮して人数の合計を出したいのですね? 例えば、名前が1000行ある場合、合計を出したいセルに、 =SUMPRODUCT(1/COUNTIF(A1:A1000,A1:A1000)) と入力して下さい。 一発で人数の合計が出ます。 (但し、ブランクもカウントされますので、ご注意を)

  • omusupa
  • ベストアンサー率61% (115/186)
回答No.7

>何かいい方法、関数などございましたら ということですので、まず、方法のほうを・・・ 「フィルタオプション」というものを使うと、重複したデータを 省くことができます。 まずは、空いているセルに条件を作ります(A列に名前が入っているのであれば、G1とG2を使って(空いているところであればどこでもいいです) 名前 * と入力してください。(*は半角で。名前というのはA1に入っている文字を使いましたが、もし、「氏名」とか「社員名」とかがA1に入っているのであれば、それと同じな前を入れます)そして・・・ 「データ」→「フィルタ」→「フィルタオプションの設定」 抽出先 選択した範囲  (にチェックを入れます) リスト範囲  社員名が入っているところすべてを範囲指定します(そのときフィールド名(列タイトル)今の場合であれば、「名前」と言うのも含めて範囲指定をしてください)そして・・・ 検索条件範囲 G1:G2  を選択してください。(先ほど作った条件のところ) 抽出範囲   C1    を選択してください(空いているところであればどこでも可) そして、重複するレコードは無視する にチェックを入れます。 そして、OK すると、重複されているデータがなくなり純粋な社員名簿になると思います。 あと、人数を知りたいのであれば、COUNTA(a2:a1000)とどこかのセルに入れると 人数を数えることができます。 関数は、他の方も出されていますが、(#6さんのが簡潔でよいと思います)初心者の方ということですのでこんな方法もありますよー程度で、見てもらえるといいと思います。 =IF(MATCH(A2,$A$2:$A$1000,0)=ROW(A2)-1,1,"") これは、MATCHという関数は、目的の文字や数字が、何行目にあるのか(または何列目にあるのか)を調べてくれる関数です。ここでは、範囲の中で「田中」と言う文字が何行目に出てくるかを調べています。複数「田中」と言うのがあれば、一番最初に出てくる場所の行数を教えてくれます。そして、ROWと言う関数は「行番号」を教えてくれる関数です。ここではA2番地の行番号を返してきて(つまり「2」と言うのが返ってきます)それに「-1」をして「1」にしています。そして、MATCHで出した結果と、ROW出だした行番号が一致したら、「1」を返すとというIF関数を使っています。確認してみてくださいね。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.6

セルB2に下記の式を入れ、必要分下へフィルドラッグします。 =IF(COUNTIF(A$2:A2,A2)=1,1,"")

回答No.4

それぞれの人が最初に現れた時だけカウントしたいんですよね。ログからユーザ数を 出す場合なんかにそういうことをしたくなりますね。そうすると、人数は名前リスト の一番上から自分の1行上までに自分と同じ名前が見つからなかった時に1になるわけ です。リストの最初は無条件で1ですけど。 B2: =1 B3: =if(iserror(vlookup(A3, $A$2:A2, 1, FALSE)), 1, "") あとはB3をダ~ッとひっぱっておしまい。

  • mita1963
  • ベストアンサー率26% (31/117)
回答No.3

COUNTIFが有効ですね 一々横に数字を入れなくても良くなります

回答No.2

こんにちは。 1.並べ替え(「データ」→「並べ替え」で名前によって並べ替え) 2.集計(「データ」→「集計」でグループの基準は‘名前’、集計する方法は‘データの個数’) ではダメでしょうか。 簡単ですよ。 データの並べ替えをしてはダメだったらまた別の方法を書き込みます。

  • crazy_dog
  • ベストアンサー率37% (148/391)
回答No.1

こんにちは 田中さんだけを数えたりするのでしたら、 どこか空いているセルに =COUNTIF(A1:A6,"田中") で田中さんのカウントをしてくれます。

関連するQ&A