• ベストアンサー

Excel 重複データを含むデータ数のカウント

Excel2003を使用しています。 重複データを1つとして数え、セルK12:K473の範囲(空白セルあり)にあるデータの個数を求める数式を過去の質問を参考にして、下記のように入力しました。 【数式1】 =COUNT(INDEX(1/(MATCH(K12:K473,K12:K473,0)=ROW(K1:K462)),0)) →結果は44でした。 空白セルを除いた状態のK列のデータをM列にコピペし、これも過去の質問を参考にして、下記のように入力しました。 【数式2】 =SUMPRODUCT((MATCH(M12:M84,M12:M84,0)=ROW(M1:M73))*1) →結果は43でした。 職場で使用しているシステムへの入力漏れがないかをチェックしたくて、上記のようなことをしたのですが、入力した件数をシステムで検索した結果は43件でした。 最初は【数式1】で得た結果とシステムでの検索結果が合わないので、ひとつひとつ確認したのですが、入力漏れもなかったので、試しに【数式2】で調べてみると、システムでの検索結果と合致しました。 【数式2】では空白セルを含む場合はエラーが出るようでしたので、【数式1】でチェックしようとしたのですが、正しい結果が得られなかったのは、私の入力した【数式1】が間違っているのでしょうか?

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>空白セルを除いた状態のK列のデータをM列にコピペし、 どのような操作で空白セルをのぞいたのでしょうか? 元データがエクスポートしたデータ数式や得られた値を「値」に変換した場合は、空白セルが文字数0の文字列となることがあります。 このとき、オートフィルタで「空白セル以外」を選択すると、本当の空白以外の空白文字列も選択対象になる(実際の空白セルと同じとみなされる)ので、実際に文字列が入力されたデータだけを抽出できます。 しかし、元データには空白文字列が混入している場合は、実際の値よりも1大きい値が表示されることになるわけです。 このような場合は、その列を選択して。「データ」「区切り位置」で「完了」すると、空白文字列を本当の空白セルに変更できます。 これを確認するには、どこかのセルに「=TYPE(空白に見えるセル)」の数式を入力するとで2が返ります。

KOH3193
質問者

お礼

回答ありがとうございます。 > どのような操作で空白セルをのぞいたのでしょうか? オートフィルタで「空白以外のセル」を指定して、空白セルを除いた状態にしました。 MackyNo1 さんの回答にもありましたように、K列のデータがIF式(G列が空欄じゃなかったら、B列のデータを表示、空欄だったら空欄)の結果なので、K列に複数ある空欄も1件とカウントされ、【数式1】では実際の件数より1大きい結果になったのではないかと解釈しています。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.3です! たびたびごめんなさい。 >最初に現れた空欄に対して“1”が表示されていましたので・・・ とありましたので再び顔を出してしまいました。 間違っていたらごめんなさい。 もしかしてそのセルは見た目は「空白」であっても、 「スペース」が一つでも入力してあれば、空白ではないと判断されます。 今一度そのセルをアクティブにして、Deleteキーを押してみてください。 もし、それで数値が表示されなくなったのであれば、 「スペース」が入力されていたと考えられます。 以上、余計なお世話かもしれませんが、 ちょっと気になったのでお邪魔しました。m(__)m

KOH3193
質問者

お礼

再度のアドバイスありがとうございます。 >>最初に現れた空欄に対して“1”が表示されていましたので・・・ ↑このときにも今回アドバイスいただいたように、そのセルをアクティブにしてDeleteキーを押したりして、いろいろ試してみましたが、スペースは入力されているということではなさそうです。 IF式で最初に『""』の結果が出たセルに“1”が表示されるようですので、文字数0のひとつのデータとして扱われて、カウントされているのかな?と思ったわけです。

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

私はもっと簡単な式(意味が判りやすい式)で検証をしたほうが良いと思う。 質問の式は質問者が自分が言っているように、何処かから探してきた式で、すばらしいと思う式だが、エクセルの熟達者が経験のすえ見つけた、高等な式で、自分が考え付くような式ではない。 当然こういう合わない場合など原因追求に苦労する。 ただ私には、 第1、2式でなぜMATCHとROWを使う必要があるのか理解できてないが。 参考 重複をのぞいて個数 http://oshiete1.goo.ne.jp/qa4454805.html ただし空白行があると旨く行かない式も在る。 ーー そしてエラーや不一致の原因究明は 読者の側にデータがない 試行錯誤できない という事で非常に難しく、このコーナーに向かない課題と思う。 ーー 例えば、作業列を使うと式が簡単になる場合がある。 この場合は一例で =IF(COUNTIF($A$1:A1,A1)=1,1,"") を入れて下方向に式を複写して、その式を入れた列の合計が件数。 空白行が2つ以上合っても狂わない。 これで何処(の行)がおかしいかチェックで出来るだろう。 ーー =IF(A1="","",1/COUNTIF($A$1:$A$10,A1))と入れて下方向に式を複写して、その列の合計を出すと件数。 空白行があることを前提にしている。

KOH3193
質問者

お礼

アドバイスありがとうございます。 参考に記載していただいたURLも拝見し、他の回答者様のアドバイスと併せて 自分なりに解釈できました。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 直接の回答にはならないかもしれませんが・・・ 1列作業用の列を使って(仮にとなりのJ列が使えるのであれば、J12セルに、もし使えないのであれば遠く離れた列でも良いですので 12行目に) =IF(COUNTIF($K$12:K12,K12)=1,1,"") という数式を入れ、フィルハンドルの(+)マークでダブルクリック またはJ473までオートフィルでコピー その後、J列の数値をSUM関数で合計する方法はダメでしょうか? これで重複と空白を無視したデータ数が出ると思います。 以上、参考になれば幸いですが、 的外れなら読み流してくださいね。m(__)m

KOH3193
質問者

お礼

アドバイスありがとうございます。 教えていただいた数式で試してみたところ、結果は44でした。 K列のデータがIF式(G列が空欄じゃなかったら、B列のデータを表示、空欄だったら空欄)の結果で、K列に複数ある空欄のうち、最初に現れた空欄に対して“1”が表示されていましたので、空欄も1件とカウントされ、【数式1】では実際の件数より1大きい結果になったのではないかと解釈しています。 教えていただいた数式のおかげで、自分なりに納得できて良かったです。 ありがとうございました!

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

空白セルだと思って削除したセルの中にスペースが入力されているセルが有ったのではないでしょうか? 見た目では空白とスペースは区別がつきませんが、数式1ではちゃんと区別しますから……。

KOH3193
質問者

お礼

回答ありがとうございます。 > 空白セルだと思って削除したセルの中にスペースが入力されているセルが有ったのではないでしょうか? オートフィルタで「空白以外のセル」を指定して、空白セルを除いた状態にしましたので、スペースが入力されているセルを削除したということはなさそうです。

関連するQ&A

  • excelで重複データを1つにカウントしたいが、セルが結合されている場合

    エクセルでの重複データをひとつにカウントする方法で、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1849830 式は上記の良回答より =COUNT(INDEX(1/(MATCH(A2:A100,A2:A100,0)=ROW(A1:A99)),0)) を使えばよいということはわかったのですが、 私の作っている表は、カウントしたいセルが結合してあり、うまくいきません。 具体的にはC,D,Eの結合のセルで、カウントしたい行は4行目~25行目まで。 空白のセルあり です。 =COUNT(INDEX(1/(MATCH(C4:E25,C4:E25,0)=ROW(C1:E21)),0)) としてみたのですが、 結果はすべて「0」となってしまいます。 このような場合どのようにすれば、よいかどなたか教えて下さい。

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

    C列からG列の5行目以降に数値データが入っています。 ただ、全てのセルに入力し足るのではなくところどころに空白セルがあります。 それぞれの列についてデータの入力してあるセルの数を数えてそれを各列の2行目に表示したいのですがどうしたらいいでしょうか?

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

    A1:E5にデータが入力してあります。(空白セルもあり) C列、D列、E列のどれか1つのセルにでもデータ(数値) が入っている行の数をカウントして、A6に表示する 方法を教えてください。 たとえばF列に、=COUNT(C1:E1)を計算する行を入れて、 A8で=COUNTIF(F1:F5,">=1")をすれば、できるのだと思うのですが、 そのために行を増やしたくないのです。

  • この数式を増えていくデータに対応させたい

    INDEX(Seet2!B$2:B$44,SMALL(IF(Seet2!$A$2:$A$44=検索セル,ROW(Seet2!$A$1:$A$43)),ROW(Seet2!B1))))) データはSeet2に記載され、この数式はSeet1に記しています。また、CTRL+SHIFT+ENTERします Seet2                Seet1 A列 B列 C列           G列              H列 検  デ  デ            検索セル 索  |  |            データ1(ここの数式)  データ2 値  タ  タ             データ1          データ2     1  2 現在の数式ではSeet2のデータ、44行目までしか対応できません。 しかしデータの行は増えていくもので対応させたいのですが、どこにどう入れたらいいのか分からなくなってしまいました 検索結果に複数でたとき、全て表示させる数式です。

  • 空白セルの削除と重複データの加算のマクロ

    シート1の文字列のデータの0又は空白のセルを取り除いて、並んでいる文字列の左と真ん 中の数が重複しているデーターは左端の数を加算して別のシート2のC10からC100のセルに抽出できるマクロを教えて下さい。データーの0は関数で空白にしたいと思っています。 データの並び方はこのままで重複するデーターの加算と空白のセルの削除を一回のマクロで実行したいのです。  E列               空白を削除    0-4-1              0-4-1         2-3-2              2-3-2         2-2-3              2-2-(3) 0                 2-2-(1) 2-2-1              4-1-9 4-1-9              2-1-7 2-1-7              2-2-3 0                 2-3-(5)                (数式がある空白セル)   2-3-(1)            2-2-3              2-3-(4) 0                 0-4-1 2-3-5 2-3-1 2-3-4 0-4-1 シート2のB列10~100に抽出 0-4-1 2-3-2 2-2-4 4-1-9 2-1-7 2-2-3 2-3-10 0-4-1 このように抽出したいのです。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • EXCELで、データの種類の数を求めるのに、

    EXCELで、データの種類の数を求めるのに、 =COUNT(INDEX(1/(MATCH(A1:A10,A1:A10,)=ROW(A1:A10)),)) という数式で求める事ができるとQ&Aがありました。 この中のINDEX関数の意図がよくわからないのですが、 どなたか解説していただけませんか?

  • EXCELで#N/Aが表示される

    L1~L10に文字 M1~M10に文字 N1~N10に日付け が、入ってます。 K1~K10は空白ですがここに1~10の数字をランダムに入れます。 そのとき、Kに1の入った行(L,M,N,)の内容をA5,B5,C5に、 Kに2の入った入った行(L,M,N,)の内容をA6.B6,C6にと Kに10が入ったところまでを順次行いたいのですが できるでしょうか? の問い合わせに対して K列に数値の重複が無いとして。 A5に =INDEX(L$1:L$10,MATCH(ROW(A1),$K$1:$K$10,0)) 必要なだけ右方向、下方向にフィルコピー の回答をいただきました。 試してみて、やりたいことが十分できるのですが、Kセルに何も入っていないと Aセルに「#N/A」が表示されます。 Kセルに何も入ってないときは空白にしたいのですが、どうすればいいのでしょうか? よろしくお願いいたします。

  • 可視セルの重複データを除いたデータをカウントする方法

    可視セルの重複データを除いたデータをカウントする方法 Excel2003を使用しています。 A列~N列までオートフィルタを設定しています。 K列である特定の文字が入力されているセルを抽出しているときに表示されているC列のデータのうち、重複するデータを除いた個数を求めたいのですが、どうしたらよいでしょうか? 上記の状態で、C列のプルダウンに表示されているリストのデータ数が求めたい個数と同じになりますが、プルダウンに表示されているリストのデータ数をカウントする方法などあるのでしょうか? よろしくお願いします。

  • エクセルについて(表示できない)

    エクセルについて初歩的な質問ですがお許しください。検索しましたがうまくヒットしませんでした。 エクセルについてですが、 すでに入力されているデータを集計する仕事をしているのですが、前回までは入力されていない列は空白として表示されていました。 ですので、空白のセルに数式を入れて計算したり、入力済みのデータの合計を出したりしていました。 ですが、今回頂いたエクセルファイルには、入力されている列しか表示されず、最後は灰色になっています。 下のほうの入力されていない列を表示させるにはどのような設定にすればよろしいでしょうか? 初歩的な質問で申し訳ございませんが、誰かアドバイスいただけると幸いです。

専門家に質問してみよう