• ベストアンサー

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/17068)
回答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って入力するのでしょうか・調べてみたのですがよくわからんくて・・・直接入力するとエラーになっていまいます。

関連するQ&A

  • 重複データの抽出

    重複した数字のデータを抽出してまとめたいのですが教えていただけないでしょうか? 例えば A列    B列   1245     1365     1245 1398 1365 1155 1245 この表を      A列    B列   1245    1245 1365    1365 1245    1398 1398    1155 1365 1155 1245 のようにまとめたい A列の重複したデータを抽出しB列にまとめたいのですが、なるべく関数でやりたいのですが、良い方法をお願いいたします。

  • エクセルで,同じ列にある複数の重複する名前を抽出する方法はありますか?

    エクセルで,同じ列にある複数の重複する名前を抽出する方法はありますか? たとえばA1~A100に氏名が入力されている中に鈴木一郎,佐々木次郎,高橋三郎など重複して氏名が入力されているとします。どの氏名が重複入力されているか不明なので,オートフィルターで抽出するのはチョット不便です。 この場合,鈴木一郎,鈴木一郎,佐々木次郎,佐々木次郎,高橋三郎,高橋三郎と言うように上から順番に重複している氏名を抽出して表示する関数はありますか?

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • 重複しないデータの抽出について

    こんにちわ。 エクセルでつぎのようなリストがあるとします。A,B列セットで重複しないデータを一度に抽出したいのですが、どうしたらいいですか?    A列     B列     1     1     1 2     1     2     3     2     1 4     1     2 5     2     2 6     1     1 結果 A列    B列       1    1       1    2       2    1      2    2

  • データから130以上と140以上を別々に抽出したい

    血圧測定の結果データがあります。 一回目の結果が140以上/90以上のときは、もう一度測り直します。 一回目の結果が140未満/90未満のときは、二回目はせず、値は「0/0」として未記載はなしです。 やりたいことは、  二回の結果のうち小さい値のほうで  130以上のとき/140以上のときを抽出(条件にあっていれば1と表示)したい  ※ただし、二回目をしなかった場合は一回目の値だけで抽出  A   B        C       D     E 1氏名 上血圧1回目  上血圧2回目   130以上  140以上 2 AA  150      140      【ここ】→1と表示 【ここ】→1と表示   3 BB  140      150      【ここ】→1と表示 【ここ】→1と表示 4 CC  140      130      【ここ】→1と表示 【ここ】→0と表示 5 DD  140      120      【ここ】→0と表示 【ここ】→0と表示 6 EE  135       0      【ここ】→1と表示 【ここ】→0と表示 6 FF  120       0      【ここ】→0と表示 【ここ】→0と表示 私が考えた式は、 140以上の方は、 =if(and(B列>=140,C列>=140),1,0) と、1つの式でできるかなと思うのですが、130以上の方は、三段階になってしまいました。 130以上の方は、 (1)まず一回目で測定完了の場合を抽出 =IF(AND(B列>=130,C列=0),1,0) (2)つぎに二回目まで測定した場合を抽出 =IF(AND(MIN(B列,C列)>=130,C列<>0),1,0) (3)さいごに(1)と(2)を足すと130以上が1と抽出 この、130以上の式は1つの式で作ることは可能でしょうか。 単純に、(1)と(2)をくっつければよいのかと思い、 =IF(OR(AND(B列>=130,C列=0),(AND(MIN(B列,C列)>=130,C列<>0)),1,0) としたところ、 「そんな数式はない」とexcelに言われ行き詰まりました。 よろしくお願いいたします。

  • 【エクセル】異なったシートの重複データに印をつける

    お世話になります。 エクセル初心者のため、説明不足等ありましたら申し訳ございませんが、宜しくお願い致します。 シート1: 列Bに3,000件の氏名(氏名はセルB2から入力されています) シート2: 列Bに2,000件の氏名(氏名はセルB2から入力されています) シート1とシート2に共通して存在する氏名を抽出したいと思っています。 シート1の列Aのセルに、重複している社員氏名があれば、数字の1を入れたいのですが、その場合はどのような式を作ればよいのでしょうか。 お忙しいところお手数お掛けいたしますが宜しくお願い致します。

  • 条件に当てはまるデータの個数を抽出したい

    A列に名前、B列にアンケート結果が書いてある表があります。 その中から、Aさんが「3」または「4」と答えたアンケートの個数を出したいのですが、 DCOUNT・SUMIF…色々試してみたのですが、望むものにならなくて… A列 B列 佐藤 3 鈴木 2 佐藤 4 鈴木 2 という表があり、たとえば、佐藤さんが「3・4」と答えた個数=2 この「=2」を求めたいのですが。。

  • データの抽出する関数について

    データシートにデータが入っています。 A B   C D・・・・続く 1 鈴木 りんご 2 鈴木 みかん 3 渡辺 りんご 4 鈴木 りんご 5 山田 バナナ 6 渡辺 バナナ 続く 氏名シートのA2のセルに氏名を入れると、その氏名のデータを抽出するように式を考えていますがうまくいきません。 =IF(ISERROR(INDEX(データ!A1:$I$15,MATCH($A$2,データ!A1:$A$15,0),2))=FALSE,INDEX(データ!A1:$I$15,MATCH($A$2,データ!A5:$A$15,0),2),"") とA4に式を入れて、A2には鈴木と入れて試みると、鈴木は正常に全件抽出できても、渡辺や山田はMATCHのデータ範囲のせい?で正常に抽出できません。 どのような関数にすればいいかどなたかご教授ください!

  • EXCELの重複データの抽出について

    1月と2月という2つのシートがあり、それぞれA列に姓、B列に名、C列にメールアドレスが入力されています。 1月と2月を比べてABC列のデータが全く同じものだけを、1月重複分、2月重複分として抽出することが、ExcelまたはAccessでうまくできないため、どなたか教えてください。

  • エクセルでデータの「どこで重複か」を見つける

    エクセルでデータが「どこで重複しているか」を見つける方法として 以前質問した際に教えていただいたのが B1セルに次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",IF(COUNTIF(A$1:A1,A1)<=1,"","重複No."&COUNT(A$1:A1,A1))) これで重複があれば上の行から数えてその行のA列に有るデータが何番目の重複であるかがB列に表示されます。 ということでしたがこれには漏れがありました。 =IF(A1="","",IF(COUNTIF(A:A,A1)<=1,"","重複No."&COUNT(A:A,A1))) とすると漏れはありませんが、No.はすべて「0」となるのです。 何番目の重複かが分かる方法はありませんか。

専門家に質問してみよう