エクセルで複数シート間での重複データを避ける方法

このQ&Aのポイント
  • エクセル2003を使用している場合、複数のシート間で重複データを避ける方法を知りたい。
  • Sheet1に検索値を入力し、他のシートからコードを引いてくる動作を行っているが、各教科のコードが重複しないようにしたい。
  • 具体的には、Sheet2-4において他の教科のコードが重複した場合に、重複を知らせるようなプログラムを作りたい。
回答を見る
  • ベストアンサー

エクセルで複数シート間での重複データを避けるための方法

エクセルで複数シート間での重複データを避けるための方法 こんにちは いつもお世話になっています。 エクセル2003を使用しています。  Sheet1は表引き先です。A1に検索値(名前)を入れると、他のシート(教科別)からコード(数字)を引いてきます。具体的には、セルA2以下に教科名、セルB2以下にコードを引いてきます。 例えば 教科 コード 国語 1 算数 2 英語 3 こんな感じです。 Sheet2は国語、Sheet3は算数、Sheet4は英語で、それぞれA列に名前、B列にコードを入力します。 例えば、 新井 1 井上 2 上野 3 こんな感じです。 ここで質問です。Sheet1でのコードの表引きで各教科のコードが重複しないようにしたいのです。Sheet1での確認ではなく、実際に各教科ごとのシート(Sheet2-4)のコード欄に他の教科のコードが重複した時に、重複を知らせるようなプログラムを作りたいのです。どの教科から入力するかは不定ですが、必ず入力されます。 (ここでの「重複」とは、あくまでもSheet1の「名前」で表引きしたときの各教科のコードの重複のことです。つまり、例えばSheet2で「新井」と「井上」のコードが重複しても構いません。) わかりにくい表現でしたらお詫びします。情報の不足がありましたら教えてください。よろしくお願いします。

  • 5goma
  • お礼率82% (265/321)

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答番号:ANo.1、2です。  先程の回答で、Sheet1の4行目以下に数式を設定する事を、書き忘れておりました。  ですから、ANo.1、2の作業に引き続いて、Sheet1のA3~B3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。

5goma
質問者

お礼

kagakusuki 様 ありがとうございました。 お蔭様で解決しました。 まだ、作業シートの色づけしか試していませんが成功しました。 面倒な内容にもかかわらず、回答字数制限を越えて丁寧に説明していただき大変助かりました。 ポイントだけではもったいない気持ちですが、大切に使わせていただきます。 簡単で恐縮ですが、お礼申し上げます。

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答番号:ANo.1に追加して、 以下の操作を行って、Sheet2のB3セルに条件付き書式を設定して下さい。 Sheet2のB3セルをクリックして選択   ↓ メニューの[書式]をクリック   ↓ 現れた選択肢の中にある[条件付き書式]をクリック   ↓ 現れた「条件付き書式の設定」ウィンドウの左端の欄をクリック   ↓ 現れた選択肢の中にある「数式が」をクリック   ↓ 「条件付き書式の設定」ウィンドウの右端の欄に次の数式を入力 =COUNTIF(OFFSET(INDIRECT("Sheet0!1:1"),MATCH($A3,INDIRECT("Sheet0!A:A"),0)-1,),$B3)>1   ↓ 「条件付き書式の設定」ウィンドウの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ウィンドウの[パターン]タグをクリック   ↓ 赤色の四角形をクリック   ↓ 「セルの書式設定」ウィンドウの[OK]ボタンをクリック   ↓ 「条件付き書式の設定」ウィンドウの[OK]ボタンをクリック  次に、以下の操作を行って、Sheet2のB3セルに入力規則を設定して下さい。 Sheet2のB3セルをクリックして選択   ↓ メニューの[データ]をクリック   ↓ 現れた選択肢の中にある[入力規則]をクリック   ↓ 現れた「データの入力規則」ウィンドウの[設定]タグをクリック   ↓ 「入力値の種類」欄をクリック   ↓ 現れた選択肢の中にある「ユーザー設定」をクリック   ↓ 「数式」欄に次の数式を入力 =COUNTIF(OFFSET(INDIRECT("Sheet0!1:1"),MATCH($A3,INDIRECT("Sheet0!A:A"),0)-1,),$B3)=1   ↓ 「データの入力規則」ウィンドウの[OK]ボタンをクリック  次に、以下の操作を行って、Sheet2のB3セルに入力規則を設定して下さい。 Sheet2のB3セルをクリックして選択   ↓ メニューの[データ]をクリック   ↓ 現れた選択肢の中にある[入力規則]をクリック   ↓ 現れた「データの入力規則」ウィンドウの[設定]タグをクリック   ↓ 「入力値の種類」欄をクリック   ↓ 現れた選択肢の中にある「ユーザー設定」をクリック   ↓ 「数式」欄に次の数式を入力 =COUNTIF(OFFSET(INDIRECT("Sheet0!1:1"),MATCH($A3,INDIRECT("Sheet0!A:A"),0)-1,),$B3)=1   ↓ 「データの入力規則」ウィンドウの[OK]ボタンをクリック  次に、以下の操作を行って、Sheet2のB3セルに設定した条件付き書式と入力規則を、Sheet2~Sheet4のコードを入力するセルにコピーして下さい。 Sheet2のB3セルを右クリック   ↓ 現れた選択肢の中にある[コピー]をクリック   ↓ キーボードの[Shift]キーを押しながらBookウィンドウの「Sheet4」見出しをクリック   ↓ B3セルをクリック   ↓ キーボードの[Shift]キーを押しながら、B列の(コードを入力する予定の範囲をカバーするのに充分な範囲の)最も下のセルをクリック   ↓ 黒い太枠で囲まれた範囲の内側を右クリック   ↓ 現れた選択肢の中にある[形式を選択して貼り付け]をクリック   ↓ 現れた「形式を選択して貼り付け」ウィンドウの中にある「書式」と記されている箇所にチェックを入れる   ↓ 「形式を選択して貼り付け」ウィンドウの[OK]ボタンをクリック   ↓ 黒い太枠で囲まれた範囲の内側を右クリック   ↓ 現れた選択肢の中にある[形式を選択して貼り付け]をクリック   ↓ 現れた「形式を選択して貼り付け」ウィンドウの中にある「入力規則」と記されている箇所にチェックを入れる   ↓ 「形式を選択して貼り付け」ウィンドウの[OK]ボタンをクリック  後は、各教科のSheetに教科の名前と個人の名前、そしてコードを入力して行き、重複コードを入力しようとすると 「入力した値は正しくありません。」 という表示が現れて入力操作が停止します。  又、既に重複した値が入力されていた場合には、各教科のSheetとSheet0において、重複したデータが存在しているセルの色が赤くなります。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、Sheet2~Sheet4の A1セルに「教科」 A2セルに「氏名」 B2セルに「コード」 B1セルに国語等の教科名が入力されていて、 A列の3行目以下に個人の名前 B列の3行目以下に個人毎のコード が入力されているものとします。  まず、作業用Sheet兼一覧表として、Sheet0を設けます。  そして、Sheet0の1行目のB列から右に向かって、「Sheet2」等の各教科毎のSheet名を入力して下さい。(「」は不要)  次に、Sheet0のB2セルに次の数式を入力して下さい。 =IF(ISTEXT(INDIRECT(B$1&"!B1")),INDIRECT(B$1&"!B1"),"")  次に、Sheet0のB3セルに次の数式を入力して下さい。 =IF(OR(B$2="",$A3=""),"",IF(ISNUMBER(VLOOKUP($A3,INDIRECT(B$1&"!A:B"),2,0)),VLOOKUP($A3,INDIRECT(B$1&"!A:B"),2,0),""))  次に、以下の操作を行って、Sheet0のB3セルに条件付き書式を設定して下さい。 Sheet0のB3セルをクリックして選択   ↓ メニューの[書式]をクリック   ↓ 現れた選択肢の中にある[条件付き書式]をクリック   ↓ 現れた「条件付き書式の設定」ウィンドウの左端の欄をクリック   ↓ 現れた選択肢の中にある「数式が」をクリック   ↓ 「条件付き書式の設定」ウィンドウの右端の欄に次の数式を入力 =AND(B3<>"",COUNTIF(3:3,B3)>1)   ↓ 「条件付き書式の設定」ウィンドウの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ウィンドウの[パターン]タグをクリック   ↓ 赤色の四角形をクリック   ↓ 「セルの書式設定」ウィンドウの[OK]ボタンをクリック   ↓ 「条件付き書式の設定」ウィンドウの[OK]ボタンをクリック  次に、Sheet0のB2~B3の範囲をコピーして、同じ行のC列から右に向かって、教科の数だけ貼り付けて下さい。  次に、Sheet0の3行目を範囲コピーして、4行目以下に貼り付けて下さい。  そして、Sheet0のA3以下に、各個人の名前を、漏れなく入力して下さい。  次に、Sheet1の A2セルに「教科」 B2セルに「コード」 と入力して下さい。  次に、Sheet1のA3セルに次の数式を入力して下さい。 =INDEX(Sheet0!$2:$2,ROWS(Sheet1!$1:2))  次に、Sheet1のB3セルに次の数式を入力して下さい。 =IF(OR($A$1="",$A3=""),"",IF(COUNTIF(Sheet0!$A:$A,$A$1)=0,"該当者無し",VLOOKUP($A$1,Sheet0!$A:$Z,MATCH($A3,Sheet0!$2:$2,0))))  これだけでも、Sheet0において、重複したコードが表示されているセルの色が赤くなりますから、判別は出来ます。  尚、各教科毎のSheetにコードを入力する際に、重複コードの有無を知らせる方法に関しては、このサイトの入力文字数の制限を超えるため、次回の回答で述べさせて頂きます。

関連するQ&A

  • EXCELの複数シート間で重複をなくしたい

    こんにちは。 番号を入力していく際、複数シート間で番号の重複を判定していく方法はないものでしょうか?A列に番号を入力していますが、以下のような今のやり方では同一シート上でしか重複を判定できません。何とかして複数シート間での重複を避けたいのですが・・・。 シート自体の書式はどのシートも同じで、A列に番号が振ってあります。 A列を選択して条件付書式を設定しました。 =countif(A:A,A4)>1を条件として セルが赤く塗りつぶされるような書式にしました。 よろしくお願いします。

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

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

  • Excelで3つのシートを一つにまとめる方法

    お世話になります。よろしくお願いします。 学校で成績表をつけるときに、一覧表も作るのですが、これを一つのシートにまとめたいのです。 成績表は学期ごとに作るので、3枚できます。形式は同じです。文で書くと分かりにくいかもしれませんが、例えばB2セルに出席番号1番の子の名前を入れると、C2セルには2番の子・・・というふうに、横の列には氏名が入ります。縦の列には、各教科の観点が入ります。例えばA3セルに国語の読む力、A4セルには国語の書く力・・・などと入れていきます。これが1学期分、2学期分、3学期分と3枚できるわけです。 これを1枚の別のシートにまとめたいのです。例えばB2、C2、D2セルを結合して氏名を入れ、その下のB3セルには1学期の成績、C3セルには2学期の成績、D3セルには3学期の成績が、元になっているシートから飛んでくるようにしたいのです。 分かりにくい説明で、申し訳ありませんが、簡単にできる方法を思いつかれた方は、教えていただけないでしょうか? よろしくお願いします。

  • エクセルで重複したデータをひとつにまとめる。

    オフィス2010を使用して、エクセルデータの作成をしています。 Sheet1のA列に氏名、B列に金額が入力しています。 A列の氏名には同じ人が重複している場合もあれば 一度だけしか氏名が出てこないひともいます。 B列の金額はバラバラです。 山田 200 池野 300 一条 200 尾本 500 宝田 600 池野 600 吉川 200 増田 800 山田 600 A列の名前で重複しているものについては合計たした数字を、 重複していないものに関しては そのままの数字を求めたいのですが 関数を使用して可能でしょうか? 出来れば別のSheet2でその表を作成したいのですが まったくわかりません。 詳しいかたがいましたら 教えてください。

  • エクセル:複数シートで重複データを抽出したい

    こちらで、ひとつのシート内での重複データの抽出はできました。 ↓ http://www12.ocn.ne.jp/~momonet/excel-temp41.htm これを応用し、複数のシートの列内の重複を抽出することはできますか? シート1のA列とシート2のC列というように、同じ列ではないこともあります。 よろしくお願いします。

  • Excelでのシート間でのセルの重複を知りたいのです

    Excel2000です。 或るブックの中に2枚のシートがあって、 それぞれA列にはたくさんの日本語の言葉が入っています。 例えば A1には「こんにちは」 A2には「さようなら」 A3には「それでは、さようなら」 ・・・ という感じに、何百・何千もの言葉が書かれています。 (A列以外は空) 1枚目のシートと2枚目のシートには、同じ言葉があり、 その重複をとりたいのです。 重複しているかどうかは、セル単位で考えます。 (「さようなら」と「それでは、さようなら」は別の言葉です。) しかし、(重複していた場合に)その言葉を1枚目のシートと2枚目のシートのいずれかに置くかの判断は、 自動で行うことはできず、人(私)がしなくてはなりません。 そこで、「この言葉は2枚のシートの両方にある!」ということを知りたいのです (例えば、セルに色をつけてくれるとか) が、どうすればよいでしょうか。 なお、シート内での言葉の重複もとらなければならないのですが その方法は既に判明しているので、 シート内での重複はないものとお考えになってもかまいません。 「一度、新しい別のシートに2枚のシートにある言葉をすべて移して、 その新しいシート内で重複をとって、 私が元の2枚のシートのいずれに入れるか判断する」 という方法もあるのですが、 多くの言葉は既に2枚のシートに正しく分かれているので、 「今更混ぜたくない」と思っています。

  • エクセル)2シート間の重複データのチェック

    シート1 A列(チェック欄)B列(会社名)C列(商品名) シート2 A列(チェック欄)B列(会社名)C列(商品名) というエクセルの表があります。 A列(チェック欄)は、 シート1のA列は「B列C列の内容がシート2と重複するもの」にチェック、 シート2のA列は「B列C列の内容がシート1と重複するもの」にチェック、 をいれています。 いずれも、B列C列がそろって重複している場合にのみチェックをしています。 B列のみ、C列のみの場合はチェックをいれません。 シート1 ☆ い社 りんご   い社 みかん   ろ社 みかん ☆ は社 ぶどう   に社 すいか   に社 りんご シート2 ☆ い社 りんご   ろ社 いちご   ろ社 すいか   ろ社 もも ☆ は社 ぶどう   に社 いちご というようなかんじです。 このA欄のチェックを自動でできるように関数を入力したいのですが、 どうすればよいでしょうか?

  • エクセルで複数のシートにまたがるデータを一枚にまとめる方法

    よろしくお願いします。 エクセルのシートが3シートあり、 シート1、シート2には従業員の名前、出勤日、売上高が一覧になっています。シート1、2の違いは月別となっています。 簡単に表にすると a,b,cという従業員がいた場合、 A列 B列 C列 a 4/1 3000 b 4/1 2000 a 4/2 4000 c 4/2 5000 b 4/3 2000 といったイメージなのですが・・・ それを今はそれぞれ月ごとに 人別にオートフィルターで検索し シート3に貼り付け人別の売上表にまとめています。 この場合だとシート1が4月シート2が5月の売上表だった場合、 シート3にaさんの4月5月の売上を一覧表にしています。 例では3人ですが、実際は人数が20人ほどいて、月別のシートも今後増えていきます。 シート3に検索条件aと入力したら シート2、3からVLOOKで値が抽出できるかとも試してみたのですが、 VLOOKは一番最上段のデータのみを抽出してしまうので断念しました。 今後の作業の効率化を考えると少しでも省略化したことを行いたいのですが・・・ なにかよいアドバイスがありましたらいただけると幸いです。

  • EXCELで別シートから値の一致しないデータを抽出する方法

    Sheet1のA列に A1 123 A2 456 A3 789 のデータが入力されており、Sheet2のB列に B1 666 B2 123 B3 888 B4 999 B5 456 B6 888 のデータが入力されている場合に、 下の表のように、Sheet1のA4以降のセルにSheet2のB列から ・Sheet1のA1~A3に一致しないデータ ・Sheet2のB列で重複しないデータ ・降順 の3点の条件で抽出する方法を関数で教えてください。 よろしくお願いします。 Sheet1 A1 123 A2 456 A3 789 A4 999 <-ここからSheer2のデータでA1~A3以外の値でSheet2の重複をさけて降順で表示させたい A5 888 A6 666

  • エクセルでの成績処理

    こんにちは いつもお世話になっています。 エクセル2003です。 成績処理のマクロを教えてください。 以下の表があります。 NO.   名前   国   算   理   国語クラス  算数クラス  理科クラス 1     A   100   75   80    1       2   2 2     B   70    85   90    2       3   1 3     C   100   75   95    1       1   1 4     D   85    95   85    3       2   3 5     E   75    80   75    2       1   2 6     F   85    70   90    3       2   1 7     G   100   90   80    1       1   3 8     H   95    85   90    2       3   2 9     I   100   85   70    1       3   3 数字がずれてすみません。 A列に連番、B列に名前、C-E列に教科ごとの点数、F-H列に教科ごとの所属クラス 実際は150名分のデータでクラスも多いですが。 この表から各教科の点数の上位3位までのクラス別順位表を作りたいのです。 その際に、順位も名前の左側につけたいです。(同セル内でも、名前セルの左でもかまいません) 同順位であれば連番の昇順で。 つまり 国語1クラス 1 A 2 C 3 G 4 I 国語2クラス 1 H 2 E 3 B という具合に、できれば、別シートにマクロで出すコードを教えてください。 勝手ながら、人数が増えても応用しやすいものだと助かります。 現在はオートフィルでの手作業をしています。

専門家に質問してみよう