• ベストアンサー

2つ以上の条件でエクセルで重複したデータを抽出したい

下記のようなエクセルのデーターがあったとします。 「氏名が重複していてかつ個数も重複するもの」 を抽出したいのですがどうすればよいでしょうか? いろいろ検索したところIF(SUMPRODUCT(($A$3:A3=A3)*($B$3:B3=B3))>1,"同じ人","") という風にすればよいようなのですが、この式自体がよくわかりません。IF関数の中にSUMPRODUCTを ネストするところまではわかるのですがその後の式「:A3=A3)*($B$3:B3=B3))」までがわかりません。 何を選んでこういった式になるのでしょうか??初歩的な質問で申し訳ないのですが、教えてください。 よろしくお願いします。 A列 B列 氏名 個数 加藤 1 新妻 2 加藤 1 鈴木 3 加藤 6 小島 8

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

  • ベストアンサー
回答No.3

数式パレットを使うレベルで配列を配列を扱うのは難しいと思います 作業列案です。 C2セル =A2&B2 D2セル =COUNTIF($C$2:$C$7,C2) F2セル =IF(D2>1,"あり","") C2:F2セルを下へオートフィル まずはこのような作業列を使った数式で理解を深めましょう

ariel88
質問者

お礼

おお!!こんなやり方があるのですね。これはわかりやすいですね。 この方法でもやってみたいと思います。ありがとうございました

その他の回答 (2)

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

SUMPRODUCT((A)*(B))は、(AとBには=が入った式が入りますが)、*で掛け算みたいな表現は、A条件とB条件のAND条件を考えると言うことです。日本語では「かつ」「と同時に」「両方とも」と言った意味でしょう。この質問の場合名前と個数の両方の一致したものを 重複とするので、そういう論理積を考えます。 Aはこの質問では、$A$3:A3=A3ですが,これはIFはありませんが、意味的にはIFをつけて考えたような意味で、TRUEかFALEが返る論理式です。簡単な例ではA1=”X”は、A1セルの値がXならTRUE、X以外ならFALSEが返ります。 そして2項の掛け算?(正しくは論理積をとる)で TRUE*TRUEはTRUE TRUE*FALSEはFALSE FALSE*TRUEはFALSE FALSE*FALSEはFALSE です。両者がTRUEのときのみTRUEとなります。それを質問の場合IFで聞いている。 ーー $A$3:A3=A3は$A$3は$で固定されている(固定されているからこそ)のでA3(固定)から現在行(変動)まで(A列について)A3と等しいか考えることになります。 そしてまたSUMPRODUCT関数は、各カッコの中の=の左辺に 連続した複数セルの、セル範囲が指定されます。その場合その範囲内の各セルすなわち第1セル・第2セル、第3セル・・との=比較と、その右側(次の)の()内の第1セル、第2セル・・(左の()内と同数であること)の組み合わせ全体について論理積を考えるので、組み合わせ数分だけの、TRUEかFALSEが決まり、両者(2つの()内)の論理積がTRUEになったものだけがカウントされます。 質問の例データ A列   B列     C列 氏名 個数 加藤 1 新妻 2 加藤 1 同じ人 鈴木 3 加藤 6 小島 8 ーーー C2の式は=IF(SUMPRODUCT(($A$2:A2=A2)*($B$2:B2=B2))>1, "同じ人","") C7まで式を複写する。 ==== >数式は直接入力するのでしょうか・ 勉強しているときは、ウイザードより、手打ちで入力を勧めます。 絶対番地化など余分な知識が要るので、習得ポイントを1本化して 集中しましょう。意味がわかってウイザードに慣れればウイザードを使えばよい。 == ウイザードに配列と言う表現がありますが、セル範囲と言った意味と思いますが、少し違った意味で、関数式において、配列や配列数式があり、配列数式はSUMPRODUCT関数と双対性的のようです。 似たようなやり方で 氏名 個数 加藤 1 同じ人 新妻 2 加藤 1 同じ人 鈴木 3 加藤 6 小島 8 ーー これはD2:D7を範囲指定して置いて =IF(($A$2:A2=A2:A7)*($B$2:B2=B2:B7),"同じ人","") と入れてSHIFT+CTRL+ENTERの三つのキーを同時押ししたものです。配列数式。 少し質問の例の回答と違ってます(両方の行に「同じ人」が出た)が。

ariel88
質問者

お礼

ありがとうございます。ふむふむエクセルは奥が深いですね・・・難しいですががんばります

  • cetus07
  • ベストアンサー率46% (117/254)
回答No.1

こんにちは!  A  B 1 2 氏名 個数 3 加藤 1 4 新妻 2 5 加藤 1 6 鈴木 3 7 加藤 6 8 小島 8 というようになっているということですよね? まず、($A$3:A3=A3)の意味を考えてみます。 A3(加藤)~A3(加藤)までの中からA3(加藤)を抽出。 ($A$3:A4=A4)の意味は A3(加藤)~A4(新妻)までの中からA4(新妻)を抽出。 ($A$3:A5=A5)の意味は A3(加藤)~A5(加藤)までの中からA5(加藤)を抽出。 というように考えてみてください。 $A$3と$をつけてある理由は、ドラッグしてコピーをするためです。 (Aの前の$は不要な気もしますが・・・) ($B$3:B3=B3)についても同様に考えられますよね?

ariel88
質問者

お礼

回答ありがとございます。意味は理解できたのですが、 その数式は直接入力するのでしょうか・SUMPRODUCTのウィザード画面(?)の配列1のところで$A$3:A3まではできるのですが、その後の=A3)*($B$3:B3=B3 まではどうやってやればいいんでしょうか?配列1のところにそのまま=A3って入力するのでしょうか・調べてみたのですがよくわからんくて・・・直接入力するとエラーになっていまいます。