• ベストアンサー

EXCEL 重複するデータを1としてカウントする方法

以下のような、ある施設の利用者一覧表です。 A列には利用した日にち、B列には利用者のIDがあります。 A   | B 日にち | ID 01/10 | 0001 01/10 | 0002 01/13 | 0001 01/15 | 0003 01/17 | 0001 これをEXCELで延べ人数ではなく、同じIDが複数回出てきても1とカウントしたいのですが方法が分かりません。 上記の表では0001、0002、0003しかありませんので3という数字を求めたいのです。 出来れば作業列を使いたくないのですが、やむをえない場合はしょうがないかなと思います。 宜しくお願いします。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.9

#7です ◆すでに同じ回答をzap35さんがされていました ◆大変失礼しました ◆文字列または数値で途中空白があってもよい方法で別の式(少し長いですが) =INT(SUMPRODUCT(1/SUBSTITUTE(COUNTIF(A1:A100,A1:A100),0,100))) ◆もし、ID番号が数値であればこんな方法も =COUNT(1/FREQUENCY(A1:A100,A1:A100))

akitaman110
質問者

お礼

=COUNT(1/FREQUENCY(A1:A100,A1:A100)) ↑この関数は数値限定のようですが簡単でいいですね。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (8)

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

#6です。 #6の最後の方で言った、SUMPRODUCT関数の利用例です。 例データ A列 001 002 001 002 003 004 002 004 006 007 上記以外のどこかのセルに =SUMPRODUCT((COUNTIF(OFFSET($A$1,0,0,ROW(A1:A10),1),A1:A10)=1)*1) と入れる 結果 6

akitaman110
質問者

お礼

SUMPRODUCT関数で出来ないかなと思い色々と試してみたのですが、こういう方法があったんですね。ありがとうございました。 またOFFSET関数は初めて見ました。これから勉強したいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.7

◆途中に空白があっても範囲は一致していなくともできますよ =COUNT(INDEX(1/(MATCH(A1:A100,A1:A100,)=ROW(A1:A100)),))

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

配列数式でもできます。 例データ 001 002 001 003 002 003 001 004 003 006 003 007 件数を出すセルに =SUM(IF(COUNTIF(OFFSET($B$2:$B$100,0,0,ROW(B2:B100)-1,1),B2:B100)=1,1,0)) と入れて、SHIFT,CTRL,ENTERのキーを同時に押す。 結果 8 なお式の中ではB列100行までを対象にしてます。適当に変えてください。 式の意味は、最上行から注目行までに付いて、注目行の内容でCOUNTIFを出して、結果が1すなわち、初出行なら1を加えて(それ以外は0を加えて)全行に渉る合計を出してます。 注目行が下に行くにつれ、範囲を1行づつ広げてますが、そこが配列数式で技巧を使う点です。それ以外は人間が見て数える場合と似た素直な考えを式に表現しているだけです。 ーー 配列数式とSUMPRODUCTは相補的ですので、SUMPRODUCT関数でも出きるかも知れません。(ただし本質問の既出回答のSUMPRODUCTとは違う式の形)

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.5

#04です。式が間違っていました  =COUNT(INDEX(1/(MATCH(B2:B100,B2:B100,0)=ROW(1:99)),)) になります。B2:B100は99行ありますのでROW関数は1:99を指定します。 この式も元はここで教えてもらったものです。 意味は本当はご自身で考えていただきたいのですが、配列数式を使っています。自分のセルの値でMATCH関数でB列を検索すると以下の結果が得られます。(式は「=MATCH(B2,B2:B100,0)」を下方向にコピーする) これがROW(1:99)で発生する行番号と一致すると、そのIDははじめて出現し、一致しない場合は2度目以降に出現したことになります。 B列 ID A0001 → 1 検索した結果=1行目の行番号と一致 → 初出 B0002 → 2 検索した結果=2行目の行番号と一致 → 初出 A0001 → 1 検索した結果=3行目の行番号と一致しない → 2度目以降 簡単にはこの一致した行数を数えていると考えてください。 1を割っているのは空白行の対策です。不一致の時はこれにより値が#DEV/0!エラーとなります。COUNT関数はエラー値は数えませんので空白行を無視することができます。

akitaman110
質問者

お礼

私のわがままにおつきあい頂き、ご丁寧に意味までお教え頂きましてありがとうございます。 非常に参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

B列の途中に空白がなければ  =SUMPRODUCT(1/COUNTIF(B2:B100,B2:B100)) でB列の重複しないID数を求められます B列の途中に空白がある場合は、多少長くなりますが  =COUNT(INDEX(1/(MATCH(B2:B100,B2:B100,0)=ROW(B2:B100)),)) で求められます。

akitaman110
質問者

お礼

COUNT関数をコピペしてみたのですが、ゼロになってしまいます。 また宜しければそれぞれの意味を教えて頂けますか? 例えば『INDEX(1/』とか『=ROW(B2:B100)』とかです。

全文を見る
すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

次の数式は如何でしょうか。 =SUMPRODUCT(1/COUNTIF(B2:Bn,B2:Bn)) ※nは最終行、途中に空白セルが有る場合、エラーになります。

akitaman110
質問者

お礼

ありがとうございます。 でも空白セルが出てくる可能性があるのでちょっと無理ですね。。。

全文を見る
すると、全ての回答が全文表示されます。
noname#42041
noname#42041
回答No.2

ヘルプによると次の式でできそうですけど =SUM(IF(FREQUENCY(MATCH(B2:B6,B2:B6,0),MATCH(B2:B6,B2:B6,0))>0,1)) 範囲指定部分4か所はデータに合わせて修正してください。 ただし、範囲内に空白セルが混ざるとだめのようです。

akitaman110
質問者

お礼

ありがとうございます。 でも空白セルが出てくる可能性があるのでちょっと無理ですね。。。

全文を見る
すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

「データ」「フィルタ」「フィルタオプションの設定」で 「重複するレコードを無視する」チェックを使えば、 利用者を重複せずに抽出することが出来ますよ。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm まあ、ID順にソートすれば、重複したIDはまとまって出てきますので 目視でチェックしても、=IF(A1=A2,0,1) としてカウントしてもいいん ですけど。計算が終われば日付順にソートしなおせば元に戻りますし。

akitaman110
質問者

お礼

ありがとうございます。 でも、関数で計算する方法を知りたかったのです。 説明不足ですいません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル関数 複数条件の人数カウント方法

    エクセルの関数で複数の条件を指定して、延べ人数ではない実人数をカウントしたいと考えています。 例えばこのような表です。 A(日付)B(利用者番号)C(利用施設) 9/1   1       小会議室 9/2   2       小会議室 9/5   1       体育館 9/6   3       小会議室 9/7   3       体育館 9/8   1       小会議室 9/9   3       体育館 この場合小会議室の延べ利用者人数は4ですが、 1が2回使用しているので3という数字を求めたいです。 同じように体育館は2という数字です。 お知恵を貸して下さい。お願いします。

  • 表内の番号が入っている個数を重複しないで数える

      A  B  C  D 1 1日 2日 3日 4日 2 11  5  6  5 3 15  6  8  9 4 20  11   上記のような表があります 列は日付になります(1日から31日) 行はその日にこの施設を利用した方のID番号が入ります。 このような表で,そのつきの実際の利用人数を求めたいのです。延べ人数はカウントできるのですが,実人数は当然重複データは”1”としてカウントしたいのですが・・・ 前にも似たような質問はしたのですが,具体的な表も載せていませんでしたので,改めて質問させていただきます。

  • エクセル 重複データのカウント

    初めまして。 初めて質問いたします。 よろしくお願いいたします。 エクセルで、A列に7ケタの数字13万件         B列に同じく7ケタの数字100~2000件         C列にB列にデータがある行まで=COUNTIF($A$2:$A$130000,B2) 上記の状況で、C列の値は1か0しか出ない状態なので、 セルD1に=COUNTIF(B2:B2000,0)と入れてB列にあるけどA列にないデータの 数(重複していないデータ)をカウントしています。 しかしながら、ベースとなっているA列のデータが13万件と多いので、 再計算などに結構時間がかかっているので、どうにかならないかと思いまして 質問させていただきました。 ちなみに、A列のデータは少しずつ増えていきます。 1度B列にあってA列にないデータは、次にB列に違うデータを入れてカウントする際に 新規データとしてA列に追加しています。 なんとか処理が速くなる方法などありましたらご教授下さい。 よろしくお願いいたします。

  • エクセルで利用者の実数をカウントしたい

    日にち別の利用者名簿を作成しているのですが,,延べ人数はカウントできるのですが,月単位での実際の利用者数をカウントするとき,同じ人が数回利用した場合でも人数は1人としてカウントしたいのです。各利用者にはそれぞれ固有のID番号がつけてあり,利用者名簿にもその番号が名前の横に振ってあります。そんな状況で,実数のカウントは可能でしょうか?

  • 複数条件でのカウント方法を教えてください。

    複数条件でのカウント方法を教えてください。 A列   B列 新聞   2 チラシ  1 WEB   3 新聞   2 チラシ  4 新聞   1 上記のような表があったとします。 2つの条件でカウントしたいのです。例えば、新聞(A列)でB列が2の人が何人いるかを出したい場合どうしたらよろしいでしょうか? SUMPRODUCTを使用して出してみたのですが上手くいきません。 =SUMPRODUCT((A:A="新聞")*(B:B=2),B:B) 上記のでは正しい数字が出ませんでした。 どうしたらいいのでしょうか? どなたか教えてください。

  • エクセル表のカウントの仕方について

    エクセルの表でいいカウントの仕方を教えてください。 まず思い浮かべて頂きたい簡単な表の例を示しておきます。行は20行程度というのを思い浮かべてください。 A列には1~10の数字、B列にはあ~んの五十音の一文字のみが、それぞれ重複ありで記入されているような単純な表です。 そこで、A列が「5」かつB列が「あ」という両条件を満たした行の数を、どこかのセルにカウントして表示したいのですが、私の能力では経験不足でできないで困っています。 どうすればいいのか教えていただきたいのです。 よろしくお願いします。

  • 2つの列の空白セルのカウント

    A列とB列に数字が入っている表があるとして、まずA列が空白であり、 かつB列も空白であるデータの個数ををカウントしたいのですが、 どういう式で解決できるでしょうか。 COUNTBLANKで試みましたが、複数条件ではうまくいかず困っています。

  • [Excel]エクセルデータのカウント

    はじめまして. エクセルデータの値が重複した場合にその数をカウントをしてくれないか調べています. 一つの値に対し,範囲内で同値だった場合のカウントはCOUNT関数を使えば良いということはわかりました. しかし,2つセルの値を一セットで考えたときのカウント方法がわかりません. 例をあげると 授業Aと授業Bを行って,授業を受けた生徒はセル内に1,受けていない生徒は0,病欠は2と記入するとA列とB列にそれぞれ1か0が生徒の人数分入ってます. そして,AとBの授業を受けた生徒(=AとB両方に1が入ってる)の人数は何人かというのをそれぞれ知りたいのです. 要は下のような感じです. A B count 1 1 3 1 1 3 1 2 1 1 0 2 1 1 3 1 0 2 2 1 1 何か良い方法はないでしょうか

  • 複数条件で重複しないデータをカウントする方法

    困っています。 エクセルの関数を教えてください。 複数条件に該当するデータをカウントする方法を教えてください。 A列とB列には不特定多数の名称と地名が入力されています。 このような表です。 A列(品名)    B列(出荷先)     いちご       東京 いちご       埼玉 いちご       東京  みかん       山梨 みかん       岐阜 りんご       埼玉  りんご       大阪 りんご       大阪 以下1500品目 A列のいちごでB列の出荷先が東京であるものは2件あります。 この「件数」を関数で表示させる方法を教えてください。 よろしくお願いいたします。

  • 数字のカウント

      A   B   C 1  1  54   7 2  0  30   7 3  1  23   7 4  2   1   7 例えばこのような表で、B列の数字はひと月たったらプラス1されようにしてA列には、B列の数字が60になったらプラス1されるようにしたいのです。又、B列の数字は60になったら1からカウントされるようにしたいのですが、教えてください。お願いします。 (A列、B列は任意の数字でC列は日付関数で月だけを表示。)

専門家に質問してみよう