エクセル2003で複数条件で重複を調べる方法とは?

このQ&Aのポイント
  • エクセル2003を使用して1000件ほどの物件のデータについて、物件名と価格が一致しているかどうかを調べる方法を解説します。
  • COUNTIFSやSUMPRODUCTでは同じ物件で価格の違う別の部屋もFALSEとなってしまうため、価格が誤っているものだけを抽出する方法が難しい状態です。
  • 部屋番号がわかれば比較できるが、A列に部屋番号があってC列にはない場合もあるため、部屋番号では比較できない状況です。
回答を見る
  • ベストアンサー

エクセル2003 複数条件で重複を調べる方法

エクセル2003を使用しています。 1000件ほどの物件のデータについて、物件名と価格が一致しているかどうかを調べたいのですが、うまくいきません。 例えば、A列に物件名、B列に価格、C列にも物件名、D列にも価格、というようなデータがあるとします。 A列(物件名)+B列(価格)と、C列(物件名)+D列(価格)のデータを比較して、物件名が一致していて、価格が違うものを探したいと考えています。一致しない場合は、どちらかの価格が誤っているので、修正が必要です。 COUNTIFSや、SUMPRODUCTで、複数条件で比較することは出来るのですが、同じ物件で、価格の違う別の部屋がある場合もFALSEが返ってきてしまうため、価格が誤っているものだけを探すことが出来ません…。。。 具体的には、下記のような式にしました。 =IF(SUMPRODUCT(($A$2:$A$1000=C2)*($B$2:$B$1000=D2)),"TRUE","FALSE") A列「○○マンション」B列「3000(万円)」、C列「○○マンション」D列「2999(万円)」で一致しないため「FALSE」になる分にはいいのですが、 A列に「○○マンション」の「3000」と、同じ「○○マンション」の別の部屋で「2999」があり、B列、C列にも同じように「○○マンション」の「3000」、「○○マンション」の「2999」がある場合、それぞれの部屋で価格は合っていても、同じ物件名で価格が違うデータがあるため「FALSE」になってしまい、 同じマンションで別の部屋があることはよくあるので「FALSE」も多くなり、価格が誤っているものだけを探すのが難しい状態です。 A列&B列をE列に入れて、C列&D列をF列に入れ、E列とF列で、COUNTIFで比較してみても同じです。 部屋番号がわかればいいのですが、A列に部屋番号があって、C列にはない場合もあるので、部屋番号では比較ができません。 同じマンションの別部屋で価格が違う場合を含めずに、価格が誤っているデータだけを抽出する方法はないでしょうか?ちなみにエクセルは2003ですが、スプレッドシートでも、エクセル以外でもかまいません。 分かりにくい部分があれば補足します。よろしくお願いいたします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

大変そうですね。 まず。SUMPRODUCT関数が使われているのは、A列とC列が1対1の関係になっていないからだと思われます。 このような案件を扱ったことがありますが、数百名の12ヶ月分の勤務状況の2つのデータ照合でした。データの抜け、二重入力、データの不備等一様の処理ができない状態でした。データの整備から始めました。 まず、この質問の、 >具体的には、下記のような式にしました。 >=IF(SUMPRODUCT(($A$2:$A$1000=C2)*($B$2:$B$1000=D2)),"TRUE","FALSE") が問題でしょう。 SUMPRODUCT関数の返り値が「1以上」でTrueになっています。回答添付図の例で、SUMPRODUCT関数の返り値は色々の値をとります。  0:C列とD列に一致するA列、B列の組がない  1:C列とD列に一致するA列、B列の組が1つある  2以上:C列とD列に一致するA列、B列の組が2つ以上ある 0はFalseで良いとして、 1は部屋番号が不明とすれば、確実に正しいとはいえません。 2以上の場合、1つのデータが2つ以上のデータを参照しているので、これも正しいとはいえません。謝りの可能性が高いかもしれません。 回答添付図では、  セルF2:=SUMPRODUCT(($A$2:$A$1001=C2)*($B$2:$B$1001=D2))  セルG2:=IF(F2=0,"対応データなし",IF(F2=1,"OK?","要確認!")) としています。 SUMPRODUCT関数を使ってのチェックはデータなし以外信用おけないことになります。判定する算式は、「部屋番号がある」前提で、ゆるく作る必要があるでしょう。判定項目がない状態では、どんな算式を使っても正しい判定はできません。 最良の方法は、3つ目のデータ項目「部屋番号」を設けて判定することでしょう。

satiko03
質問者

お礼

回答ありがとうございます。 前の方の回答でもありましたが、部屋の階数なり広さなりの項目を追加すると出来るかもしれませんね! 何か出来そうな気がしてきました。ありがとうございます。

その他の回答 (4)

  • kon555
  • ベストアンサー率52% (1753/3364)
回答No.4

具体的なデータ状況や作業環境が不明なので何とも言い難いのですが、 『部屋番号がわかればいいのですが、A列に部屋番号があって、C列にはない場合もあるので、部屋番号では比較ができません』 との事ですが、では作業者は何を根拠にして「部屋違い」と「数字の不一致」とを見分けているのでしょうか? 「同じ物件名で価格が違うデータがあるため「FALSE」になってしまう」のは実際のところ正しい挙動ですよね。 さらに「A列に部屋番号があって、C列にはない場合もあるので、部屋番号では比較ができません」とくると、シンプルに考えると作業者としてもそれは数字の誤りとしか認識できないはずです。 逆に言えば作業者の判断基準をエクセル上に落とし込む事ができれば、ご希望の挙動は可能になると思います。

satiko03
質問者

お礼

回答ありがとうございます。 2つのデータは、元は同じものなのですが、掲載するサイトが別々なので、それぞれのサイトの管理システムでデータを入力していて、 Aというサイトに掲載した時は部屋番号がわからず、例えば4Fとだけ入っていて、Bというサイトでは例えば部屋番号が402と入っていたりします。 価格変更があった時に、両方のサイトできちんと変更できているかを確認したいのですが、価格が大きく違わず、どちらかが1Fと102、どちらかが4Fと402であれば、それぞれの組み合わせが同じ部屋ではないかと判断します。同じ階でしたら、他にも広さが同じかで判断したりしますが…とすると、階数や広さを追加すれば絞りこめそうな気もしますね!

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

質問条件が複雑なので参考になるかどうか?だが 2列を考慮して、重複しているデータを見つける、関数の方法 例データ A-G列(D,F列は空白列 府県 市名 結合文字列 東京都 府中市 3 東京都府中市 東京都 青梅市 1 東京都青梅市 東京都 八王子市 2 東京都八王子市 東京都 東村山市 1 東京都東村山市 千葉県 市川市 3 千葉県市川市 千葉県 千葉市 1 千葉県千葉市 千葉県 柏市 1 千葉県柏市 千葉県 木更津市 1 千葉県木更津市 東京都 八王子市 2 東京都八王子市 重複在り 東京都 八丈島 1 東京都八丈島 東京都 府中市 3 東京都府中市 重複在り 千葉県 市川市 3 千葉県市川市 重複在り 千葉県 市川市 3 千葉県市川市 東京都 府中市 3 東京都府中市 C2の式 =COUNTIFS(A$2:A$20,A2,B$2:B$20,B2) E2の式 =A2&B2 G2の式 =IF(COUNTIF($E$2:E2,E2)=1,"",IF(COUNTIF($E$2:E2,E2)=2,"重複在り","")) === 方法1 一物一価だとして、 VLOOKUP用の品物と価格の表を作って、違う価格のものでないか調べる方法。 == 方法2 品物列と価格列の結合した列を作り、データーフィルター詳細設定ー「重複するレコードは無視する」にして、出てきた、品物ー価格の(ユニークな(意味はWEBで調べてください))組み合わせを人間が睨んで、間違いの組み合わせを見つけ、その間違いの組み合わせ値でシートを検索し、どこにあるか知る。

satiko03
質問者

お礼

回答ありがとうございます。 すみません、どこからどこまでがどの列になるのかよくわからなかったのですが、式の意味はなんとなくわかりました。 VLOOKUPはあまり使ったことがないので調べてやってみます。

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.2

#1の方のように取り出し、A列の昇順、Bの昇順に並べ替え 添付画像のように C3=IF(AND((A2=A3),(B2<>B3)),"要チェック","") と埋め、必要数下方向に複写するという解はいかがでしょうか。

satiko03
質問者

お礼

回答ありがとうございます。 A列&B列、C列&D列の物件数が同じなら、教えて頂いた方法も可能かと思うのですが、どちらか一方にしか無い物件もあるので難しいかもしれません。 説明が足りなくてすみませんが、ありがとうございます。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

A列とB列のペアとC列とD列のペアは、新旧とかという関係性がないのであれば、別シートにA列とB列をコピーして、そして、その下にC列とD列もくっつけてコピーして、並べ替えをすればすぐわかると思います。

satiko03
質問者

お礼

回答ありがとうございます。 新旧などの関係性は無いのですが、件数が1000件と多いので、目視では少し大変かもしれません、、、

関連するQ&A

  • Excelで複数条件での合計値を求めるには

    過去の質問をみていろいろやってみましたが、どうしてもできませんでした。。    A    B     C 1 工事件名  内   容    2 物件A   工程名 掘る 3        期間  1/1-1/4 4(A2-4結合)  工数  0.2    5 物件A   工程名 土台作り 6(A5-7結合) 期間  1/5-1/25 7        工数  0.7 8 物件B   工程名 掘る 9        期間  1/2-1/10 10        工数  0.3   ・   ・ 15      物件A (工数合計) 「物件ごとの工数合計」をとりたいのです。 関数を下記の通り書いていますが、エラーになります。 =SUMPRODUCT(($A$2:$A$10="物件A")*($B$2:$B$10="人月")*($C$2:$C$10)) C列に文字が混ざっているのがもんだいなのでしょうか・・ どうか知恵を貸して下さい。 よろしくお願いします。

  • エクセル 複数条件を満たすデータを返す関数

    エクセルで、複数条件を満たした時にデータを返す関数をお教えください。 例えばA列に県名、B列に都市名、C列にアルファベットが入っている表があります。 イメージ・・・(カッコ内はセルの番地) (A1)神奈川県   (B1)横浜市    (C1)X (A2)神奈川県   (B2)横須賀市   (C2)Y (A3)千葉県    (B3)千葉市    (C3)Z この表があり、 (A5)神奈川県   (B5)横須賀市   (C5)??? このようにA5,B5のデータ(条件)に一致するアルファベットを C5に返す関数が必要です。(ここではYを返す) C列が数値の場合は、sumproduct等で可能と思いますが、 C列が文字の場合は使えないのではと考えています。 何か方法はありませんでしょうか?

  • エクセル 複数の条件での比較 一致 。困ってます。

    こんにちは。 エクセルでデータの比較、照合の方法で困っています。 A~Cのデータにあわせて  D~Fのデータを照合したいのですが A列の番号とD列の番号が順不同になっており上手く照合ができません。 下記のようなデータが100件以上ありA,B,Cの三つの条件が全て一致するD,E,FのデータにあればOK,ひとつでも違っていればNGと表記させたいのですが、なかなかいい関数が思いつきません。 出来ればVBAではなく関数で表記をさせたいのですが、宜しくお願いいたします。 A  B     C       D E     F 1 りんご  青森 1 りんご  長野 3 みかん 和歌山    2   スイカ  千葉

  • エクセル 複数条件に合うデータを数えたい

    エクセル 複数条件に合うデータを数えたい エクセルでA列に何らかの値が入っていて(=空欄でない)、かつB列の値が“○”の数を数えたいです。 =SUMPRODUCT(($A:$A="*")*($B:$B="○"))と入れましたがSUMPRODUCTはワイルドカードが使えないようで結果は「0」となってしまいダメでした。 エクセル2007を使ってるので =COUNTIFS($A:$A,"*",$B:$B,"○")としたらできたのですが2002を使っている人と共有したいので2002でも使える関数を使いたいです。 どうしたらいいのでしょうか?

  • 3っつの列の重複種類の個数抽出

    どなたかお知恵をお貸しいただけないでしょうか。 3列のデータで重複している種類がいくつあるかを出したいのですが、sumproductなどを使用しできるものなのでしょうか?   A  B  C  D 1 あ  う     え 2 い  い  あ  あ 3 う     あ 4 え     か   い 上記データ行列で、A列にあり、且つBかC列にあり、且つD列にある文字の種類を○個とだしたいのですが、可能でしょうか? 上記だと、「あ、い」が重複しているので、「2」と表示するような関数です。 論理的に言うと、 「A列 and (B列かC列) and D列」 と言うような状態です。 sumproductとcountifなどを駆使してできたらと思っているのですが、どなたかお知恵をお貸しください。 申し訳ございませんがよろしくお願いいたします。

  • 複数の条件による分類

    データは、A列、B列、C列にそれぞれランダムな1桁の数字が入っています。 行で比較し、A1=B1=C1 ならば「あ」       A1=B1且つA1≠C1ならば「い」       A1≠B1且つA1=C1ならば「う」       A1≠B1且つB1=C1ならば「え」       A1≠B1且つA1≠C1且つB1≠C1ならば「お」 をD列に標記する場合、IFとANDを駆使して出来そうなのですが、よくわかりません。教えて下さい。

  • エクセルで複数条件に当てはまるセルの数を数える方法ありませんでしょうか?

    Excel2002での質問です。 ご覧頂いた皆様で、方法がわかる方がいらっしゃいましたら回答お願い致します。 ------------------------- 1  A      B 2  期日A   ○ 3  期日B 4  A店    15 5  B店    20 6  C店    * 7  担当A1  ○ 8  担当B2  × 9  A価格 10  B価格   ○ 11  C価格   - ------------------------- というリストから、 a. A列に「A」の文字が含まれ(期日A・A店・担当A1・A価格)、B列が「○」である件数(この場合、2) b. A列は上記と同様で、B列に何かが入っている件数(この場合、3) を求めたいのです。 できれば、求める数式以外の「計算用のスペース」は作りたくありません。 また、 c. リストが下に伸びる事を考慮した範囲選択の方法 も、何か上手い手段はないかと考えています。 webサイトを検索した所、 SUMPRODUCT関数を使うのが正解かな? 検索のワイルドカードのような要領で、*A* と出来ないかな? 「何かが入っている」…COUNTAで数えるといい? と言った想像をしていまして、自分でも数式をいじって試したりしましたが上手く結果が得られません。 何かいい手段はありませんでしょうか?ご助力をお願いします。

  • エクセル SUMPRODUCT関数でOR検索

    添付画像のような表があります。 '=SUMPRODUCT((B:B="男")*(C:C="新潟")*(D:D="B")*ROW(A:A)) で、B列が男、C列が新潟、B列がB のデータがある行番号を返してくれます。 B列がBではなく、B列がAまたはABのデータがある番号を検索する場合はどうかなと思い、 '=SUMPRODUCT((B:B="男")*(C:C="新潟")*OR((D:D="A"),(D:D="AB"))*ROW(A:A)) としてみたら、該当データがないにもかかわらずB列がBの行番号が帰りました。SUMPRODUCTで検索する場合、ORを使う場合はどのように書けばよいのでしょうか? ’=SUM(SUMPRODUCT((B:B="男")*(C:C="新潟")*(D:D="A")*ROW(A:A)),SUMPRODUCT((B:B="男")*(C:C="新潟")*(D:D="AB")*ROW(A:A))) のようにそれぞれを求めて合算するしかないのでしょうか?

  • EXCELで2つ条件で1つが部分一致のとき

    Excelの2003バージョンです。 現在使用しているファイル名「会社」シート名「支社」のセルE12に 同じシート上のD12(同じ行ですね)と ファイル名「埼玉」シート名「データ」のA列の中の値と一致(完全一致)して なおかつ、シート名「支社」のF3の値(例・後1、後2)とシート名「データ」の C列の値(例・後1 第23号)と部分一致をした時に 使用中シート「支社」のE12に●、していない時は空白にしたいのです。 ファイル「会社」シート名「支社」 行数 --A列----B列----C列-----D列----E列----F列---- 1                             11223344  (ここに関数)  後1 ファイル「埼玉」シート名「データ」 行数 --A列----B列----C列-----D列----E列----F列---- 10   11223344         後1 第23号  11   11223344         一般会社 第44号  のような場合はE1に●になるようにしたいのです。 それ以外は空白で。 あまり詳しくないので、よろしくお願いします。

  • SUMPRODUCT関数 文字列を含んだ複数条件

    いつもお世話になっております。    A    B     C    D 2  1    4     4     4 3  2     2     2     4 4  3     -    -     - B列が4以上かつC列が4以上かつD列が4以上のA列の合計を出したいのですが、 =SUMPRODUCT((B2:B4>=4)*(C2:C4>=4)*(D2:D4>=4)*(A2:A4)) というようにすると、「4」と出てしまい、どうもうまく計算されません。 「-」が4以上に反応してしまい、どうしたらよいでしょうか? どうぞ宜しくお願い致します。

専門家に質問してみよう