OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

EXCELでの重複データカウント方法について(過去問読みましたがわかりません)

  • 困ってます
  • 質問No.209860
  • 閲覧数855
  • ありがとう数5
  • 気になる数0
  • 回答数8
  • コメント数0

いつもお世話になっております。excel97の関数に関してです。
過去問を検索し、
http://oshiete1.goo.ne.jp/kotaeru.php3?q=118918において、

質問:会社名のデータが1万件あります。
その中には、同じ会社名が重複しているものがあります。
そこで、重複しているデータは1つのものとしてカウントし、全部で何件の会社が存在するかカウントする方法はあるでしょうか?

回答:関数でやるとすると。。。。
データが、A1~A10に入っているとします。
=SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))
とA11に数式を入力します。
これではいかがでしょうか??
解説
COUNTIF関数でそれぞれの会社の数をカウントし、
SUMPRODUCT関数で配列の積をもとめます。

というのがあり、未熟者の私は理屈はよく分からないまま、この式でやってみたあと実際に数えてみたのですが、いつも正解数より1多くなってしまうのですが、この式の最後に-1を付ければいいのかな? と思ったのですが、いかがでしょうか?
通報する
  • 回答数8
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.8
レベル11

ベストアンサー率 27% (103/370)

GO! ・・・(*_*)?

※一応、適当な箇所で会社名を" "に変えてみて、結果が正しいかご確認を・・・
お礼コメント
noname#63648

無理を聞いて頂き、ありがとうございます!
確認もしました。

お礼にhiromuyさまの質問が、私のわかることならお答えしようと思い(パソコン関係は無理そうですが(^^;)、検索してみましたが、残念ながら、ひっかかりませんでした。(文章中に名前が出てこないと、ひっかからないそうですね。)
感謝の表しようがありませんが、本当に助かりました。
投稿日時 - 2002-02-13 14:06:52
-PR-
-PR-

その他の回答 (全7件)

  • 回答No.2
レベル11

ベストアンサー率 27% (103/370)

関数に問題はなさそうですので、同じ会社名でも文字が全角/半角で違っていたり、会社名の最後または途中にスペースが入ってないか確認してみてください。 もし、上記のようなものがあれば、違う内容と判断されてしまいます。 ...続きを読む
関数に問題はなさそうですので、同じ会社名でも文字が全角/半角で違っていたり、会社名の最後または途中にスペースが入ってないか確認してみてください。
もし、上記のようなものがあれば、違う内容と判断されてしまいます。
お礼コメント
noname#63648

あっ、昨日お世話になったhiromuyさま、この質問にもお答え頂き、ありがとうございます!
「会社名」は私の場合会社コードで、しかも元データからそのままコピー&ペーストしているので、間違いないはずなのです。
ただ、下にも書きましたが、空欄を1とカウントしてしまうようなのです。
投稿日時 - 2002-02-01 19:50:13

  • 回答No.1
レベル14

ベストアンサー率 33% (1403/4213)

> =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10)) これを実行すると「10」が取得できます。 「会社名が9件なのに」ということならば「タイトル行」を加算してませんか? ...続きを読む
> =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))
これを実行すると「10」が取得できます。

「会社名が9件なのに」ということならば「タイトル行」を加算してませんか?
補足コメント
noname#63648

ありがとうございます!
タイトル行加算していません。
どうやら、ブランクを1とカウントしてしまうようなのです。
どの列もブランク(計算式は入っているが、その結果ブランクとなっている)のセルがあるので、それで、必ず、1加算されてしまうようなのです。
変ですよね?
投稿日時 - 2002-02-01 19:40:11
  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

>理屈はよく分からないまま... =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10)) の意味を考えてみると、これは、  1/COUNTIF(A1:A10,A1)  1/COUNTIF(A1:A10,A2)  1/COUNTIF(A1:A10,A3)     :  1/COUNTIF(A1:A10,A10) の合計でしょう。例えば、SUMPRODUCT(B ...続きを読む
>理屈はよく分からないまま...

=SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))
の意味を考えてみると、これは、

 1/COUNTIF(A1:A10,A1)
 1/COUNTIF(A1:A10,A2)
 1/COUNTIF(A1:A10,A3)
    :
 1/COUNTIF(A1:A10,A10)

の合計でしょう。例えば、SUMPRODUCT(B1:B10)=SUM(B1:B10)が成立するのと同じ理屈です。
配列の積を求めているよりも、配列の和の機能(×1をしてたしている)ですね。

上の式を具体化してみると、6行あったとして、

 AA 3 1/3
 AA 3 1/3
 AA 3 1/3
 BB 2 1/2
 BB 2 1/2
 CC 1 1/1

となります。2つ目が『COUNTIF(A1:A10,A1)』に対応、3つ目が 『1/COUNTIF(A1:A10,A1)』に対応。
3つ目を全部たすと『3』になるわけです。
重複個数を数えて、例えば10個あればその価値を1/10にして、10個たして『1』が出てくるわけです。

そう考えると、算式で誤差がでるとは考えにくいですね。『-1』するよりも、先頭行に『会社名』とかの表題が入っていないでしょうか。その場合は、算式のA1をA2に変えればいいと思います。

参考になった?
お礼コメント
noname#63648

ありがとうございます!

1/COUNTIF(A1:A10,A1)
 1/COUNTIF(A1:A10,A2)
 1/COUNTIF(A1:A10,A3)
    :
 1/COUNTIF(A1:A10,A10)
これを見て、理屈が分かりました! 感動です。
でも、下にも書きましたが、空欄をカウントしているようなのです・・・。
投稿日時 - 2002-02-01 19:52:02
  • 回答No.4
レベル12

ベストアンサー率 52% (322/612)

こんにちは! A1からA10であれば 記載された式でも問題なく 結果が返る筈ですが、皆さんの書かれている通り 項目行を含めているのでは? ただし範囲が大きいと非常に重くなります。 配列数式の中でCOUNTIFで最終範囲まで配列検索 しますから・・・・ 以下の式にすれば  =SUMPRODUCT((MATCH(A1:A10,$A$1:$A$10,0)=ROW(A1:A10)) ...続きを読む
こんにちは!

A1からA10であれば 記載された式でも問題なく
結果が返る筈ですが、皆さんの書かれている通り
項目行を含めているのでは?

ただし範囲が大きいと非常に重くなります。
配列数式の中でCOUNTIFで最終範囲まで配列検索
しますから・・・・

以下の式にすれば

 =SUMPRODUCT((MATCH(A1:A10,$A$1:$A$10,0)=ROW(A1:A10))*1)

MATCH()はヒットしたところで検索を終了しますので
多少は軽くなると思います。

範囲がA2:A1000の場合でも ROW()内の範囲は必ず
A1から初めて同配列数で終了にして下さい→ A1:A999

 =SUMPRODUCT((MATCH(A2:A1000,$A$2:$A$1000,0)=ROW(A1:A999))*1)
お礼コメント
noname#63648

ニューアイディアをありがとうございます。

やってみましたが、やはり、1多くなってしまいました。

下にも書きましたが、ブランクセルを1と数えてしまうようです。
もー、嫌いっ変なパソコン! (八つ当たりですね(^^;)
投稿日時 - 2002-02-01 20:03:17
  • 回答No.6
レベル11

ベストアンサー率 27% (103/370)

遅ればせながら再登場です。 ブランクセル(数式は入力されている)は「0」と見なされている様ですので、下記のように、 =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))-IF(COUNTIF(A1:A10,0)=0,0,1) として、ブランクが1つでも存在した場合に-1するようにしてみるのはどうでしょうか。 ...続きを読む
遅ればせながら再登場です。
ブランクセル(数式は入力されている)は「0」と見なされている様ですので、下記のように、
=SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))-IF(COUNTIF(A1:A10,0)=0,0,1)
として、ブランクが1つでも存在した場合に-1するようにしてみるのはどうでしょうか。
補足コメント
noname#63648

ありがとうございます。
やってみました。もしや、最後の(・・・=0,0,1)は、(・・・=0,1,0)ではないでしょうか? それだと理屈上も納得ですし計算もうまくいくのですが。
手取り足取り教えて頂かないとだめなもので、いちいちホント申し訳ありません。
投稿日時 - 2002-02-05 17:13:07
  • 回答No.5
レベル12

ベストアンサー率 52% (322/612)

再び こんばんは! >ブランクセルを1と数えてしまうようです。 MATCH()関数ではブランクセルがあると#N/Aとなりますので たぶんスペースが入力されているセルがあるのでは? ・両方(ブランク スペース)をカウントしない式 配列数式です  =SUM(IF(TRIM(A1:A10)="",0,(MATCH(A1:A10,$A$1:$A$10,0)=ROW ...続きを読む
再び こんばんは!

>ブランクセルを1と数えてしまうようです。
MATCH()関数ではブランクセルがあると#N/Aとなりますので
たぶんスペースが入力されているセルがあるのでは?

・両方(ブランク スペース)をカウントしない式

配列数式です

 =SUM(IF(TRIM(A1:A10)="",0,(MATCH(A1:A10,$A$1:$A$10,0)=ROW(A1:A10))*1))

と数式バーに入力後(数式バーにカーソルがある状態で)
 [Ctrl]+[Shift]を押したまま[Enter] で入力確定
お礼コメント
noname#63648

本当にたびたびありがとうございます。計算式をすべてコピーペーストしたので、スペースが入力されたセルは無いと思います。今回は、no.6の方が教えて下さったやり方で行こうと思うのですが、後学の為に、もしよろしければ教えて下さい。[Ctrl]+[Shift]を押したまま[Enter] というのは、単にEnterで入力確定するのと、どう違うのでしょうか。やってみたところ、{}のカッコが自動的に付いた気がするのですが、それは関係無いでしょうか?
投稿日時 - 2002-02-05 17:43:08
  • 回答No.7
レベル11

ベストアンサー率 27% (103/370)

hiromuyです。 あれ!?そうですか。う~ん? 数式後半のIF文中で、 COUNTIF(A1:A10,0)=0が条件式ですが、これはA1:A10の範囲にあるブランクセル(数式は入力されている)の個数が0の場合ということで、 TRUEの場合、0 FALSEの場合、1 を返すようにしています。 従って、ブランクセルが1つ以上あれば、FALSEの場合の「1」が返り、-1されると思ったんですが・ ...続きを読む
hiromuyです。
あれ!?そうですか。う~ん?
数式後半のIF文中で、
COUNTIF(A1:A10,0)=0が条件式ですが、これはA1:A10の範囲にあるブランクセル(数式は入力されている)の個数が0の場合ということで、
TRUEの場合、0
FALSEの場合、1
を返すようにしています。
従って、ブランクセルが1つ以上あれば、FALSEの場合の「1」が返り、-1されると思ったんですが・・・
(ブランクセルが0個(ない)場合はTRUEの「0」が返り、-1はされない)
IF(COUNTIF(A1:A10,0)=0,0,1)
これでいけると思ったんですが、最後の並びが(0,1,0)でうまくいくのであれば、他の原因があるのでしょうか?
色々想像してみたのですが、申し訳ありませんが今のところ思いつきません。
補足コメント
noname#63648

たびたびほんとうにありがとうございます。遅くなり申し訳ありません(風邪でダウンしておりました)。
確かに、そう言われてみると、理屈としては(0,1,0)ですね。
それで、ブランクをゼロと認識しているのかどうなのかがそもそも疑問なので、(A1:A10," ")と、この部分を0の代わりに" "としてみました。そうしたら、IF(COUNTIF(A1:A10," ")=0,0,1)
この式で、正しい結論が導けるようです。
hiromuy様、また甘えて申し訳ありませんが、これで良し! と、ゴーサインを頂けると大変心強いのですが...。
投稿日時 - 2002-02-12 11:15:01
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ