エクセルで比較して差を求める方法

このQ&Aのポイント
  • エクセル2010で複数の表を比較し、差分を抽出する方法について解説します。
  • シリアル番号、英語名、日本語名を比較して、一致しない部分を特定する方法を詳しく説明します。
  • マクロやVBAを使わずに、関数式レベルで効率的に差分を求める方法をお伝えします。
回答を見る
  • ベストアンサー

エクセルで 比較して差を求める

よろしくお願いします。 エクセル2010で三つの表があり、シリアルナンバー、英語名、 日本語名が書かれている票があります。 それぞれの表を比較して、同じ部分と違う部分をわかるようにしたいのですがどうすれば一番簡単でしょうか? 3つの表を比較して、シリアル番号は共通しているが、英語名、日本語名が違うもの (ある表では「1234- apple-りんご」となっているが「1234-apple-なし」となっているなど) など、シリアルナンバー、英語名、日本語名すべてが一致しているもの以外を抽出したいのです。 ある表にはあるけれど、別の表にはないシリアルナンバーの抽出などどのようにしていけばよろしいでしょうか? if関数で一致するかどうかなどやっていくという愚直な方法もあると思うのですが 効率的な方法があれば教えてください。 マクロやVBAは使えないので、関数式レベルでできる方法を教えてください。

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

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

>連結シートというのはグループ化したシートのことでしょうか。 単純に3つの表をコピーして、1枚のシートに1つの表として貼り付けることです。 >やりたいことは3つの表を比較した際に、下記が判明することです。 >・同じ英語名に対して複数の和訳がないこと(1つの英語名に対して一つの和訳名) >・もしも同じ英語名に対して複数の和約がある場合は色塗りがされるなど判明させる 単純にシリアル番号と日本語訳を統一したいだけなら、特に色塗りして作業するよりも表を1つにして(必要ならどの表のデータか補助列に記入しておく)重複したデータには色を付けるなどの処理の方が合理的だと思うのですが、どうして表別に重複データに色を付けたいのでしょうか? もちろん、このような処理も可能ですが、いくぶん複雑な関数処理が必要になりますので、最終目的をお知らせください(その場合は実際の表のレイアウトも提示してください)。 >同じ英語名に対して複数の和訳がある場合は統一したいのです。 この部分だけなら1つのシートにまとめたデータで「重複の削除」を行い、英語名の重複を調べればよいと思います。 その場合、重複を削除したデータで英語の列で並べ替えて重複して和訳の異なる英単語を処理しやすくするのが効率的です。 関数で表示したい場合は以下のような関数で重複が表示できます(もちろん色付けもできます)。 =IF(COUNTIF(B:B,B2)>1,"重複あり","") >また、もしも同じシリアルナンバーで複数の英語名が設定されている場合も判明させ、 1つのシリアルナンバーに1つの英語名というのを徹底させていきたいです。 この場合もシリアルナンバーで並べ替え、上記と同じ処理を行ってみてください。

kimi1980
質問者

お礼

回答ありがとうございます。 教えていただいた方法が一番容易にできるみたいです。 大変助かりました。

その他の回答 (3)

回答No.3

このような感じではいかがでしょう。 1 「番号 英 日 番号 英 日」というふうに6列などになっている場合は、「番号 英 日」の3列にする。 2 3表を縦にくっつけて、1つの表にする。 3-1-1 2で作った表の中にカーソルを置いて、リボンあるいはメニューバーの「データ」で、「フィルタ」あるいは「オートフィルタ」を取り付ける。 3-1-2 表示されたプルダウンのボタンから、昇順での並べ替えを行う。「日本語、英語、Serial #の順で3回」並べ替える。 3-1-3 残したいレコードを一つひとつ見て確認し、該当する行について、表の右隣の列に○印などの記号を入れる。(色情報は、特に古いバージョンでは何も集計に使えないので、テキストで記録しましょう) 3-1-4 一旦フィルタを解除し、再び取り付ける。すると、○印がある列にもフィルタのボタンが表示されるので、○印を付けたレコードのみ抽出・表示することができる。絞り込んだ状態で表をコピーして他のシートに貼り付けるなどし、活用。 3-2 2で作った表の中にカーソルを置いて、リボンあるいはメニューバーの「挿入」で、「ピボットテーブル」を実行。2で作った表中の同一レコード(「番号 英 日」のデータが3列とも同一であるレコード)の件数が掲載された表を作れる。できた表中を右クリックして表示される「フィールドの設定」から、件数が「最大値」であるレコードのみを表示させることもできる。

kimi1980
質問者

お礼

回答ありがとうございます。

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

>シリアルナンバー、英語名、日本語名すべてが一致しているもの以外を抽出したいのです。 単純に3つの表の重複にないデータを抽出したいということなら、別シートに3つの表をコピー貼り付けした連結シートを作成し、そのシートで「データ」「重複の削除」を行うのが簡単です。 シートごとに重複のあるデータにマークを付けたいなど、それ以外の目的があるならご希望の操作をもう少し詳しく説明してください。

kimi1980
質問者

お礼

回答ありがとうございます。 連結シートというのはグループ化したシートのことでしょうか。 やりたいことは3つの表を比較した際に、下記が判明することです。 ・同じ英語名に対して複数の和訳がないこと(1つの英語名に対して一つの和訳名) ・もしも同じ英語名に対して複数の和約がある場合は色塗りがされるなど判明させる 同じ英語名に対して複数の和訳がある場合は統一したいのです。 また、もしも同じシリアルナンバーで複数の英語名が設定されている場合も判明させ、 1つのシリアルナンバーに1つの英語名というのを徹底させていきたいです。

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

 何をやりたいのかがはっきりとは判りませんが、 >シリアルナンバー、英語名、日本語名すべてが一致しているもの以外を抽出したいのです。 と仰っておられるという事は、若しかしますと、3つの表のデータを全て合わせた中で、たった1回しか現れないデータだけを、抽出したいという事でしょうか?  それならば、以下の様な方法は如何でしょうか?  今仮に、抽出したデータをJ列~L列に表示させるものとします。  又、N列~P列をさ魚列として使用するものとします。  まず、N2セルに次の数式を入力して下さい。 =IF(OR(COUNTIF($B2:$D2,"*?")=0,COUNTIFS($B$9:$B$12,$B2,$C$9:$C$12,$C2,$D$9:$D$12,$D2)+COUNTIFS($F$2:$F$5,$B2,$G$2:$G$5,$C2,$H$2:$H$5,$D2)),"",ROWS($1:2))  次に、O2セルに次の数式を入力して下さい。 =IF(OR(COUNTIF($B9:$D9,"*?")=0,COUNTIFS($B$2:$B$5,$B9,$C$2:$C$5,$C9,$D$2:$D$5,$D9)+COUNTIFS($F$2:$F$5,$B9,$G$2:$G$5,$C9,$H$2:$H$5,$D9)),"",ROWS($8:9))  次に、P2セルに次の数式を入力して下さい。 =IF(OR(COUNTIF($F2:$H2,"*?")=0,COUNTIFS($B$2:$B$5,$F2,$C$2:$C$5,$G2,$D$2:$D$5,$H2)+COUNTIFS($B$9:$B$12,$F2,$C$9:$C$12,$G2,$D$9:$D$12,$H2)),"",ROWS($1:2))   次に、N2~P2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  次に、J2セルに次の数式を入力して下さい。 =IF(ROWS($2:2)>COUNT($N:$P),"",IF(ROWS($2:2)>COUNT($N:$N),IF(ROWS($2:2)>COUNT($N:$O),INDEX($F$1:$H$5,SMALL($P:$P,ROWS($2:2)-COUNT($N:$O)),COLUMNS($J:J)),INDEX($B$8:$D$12,SMALL($O:$O,ROWS($2:2)-COUNT($N:$N)),COLUMNS($J:J))),INDEX($B$1:$D$5,SMALL($N:$N,ROWS($2:2)),COLUMNS($J:J))))  次に、J2セルをコピーして、K2~L2の範囲に貼り付けて下さい。  次に、J2~L2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  これで、J列~L列の2行目以下に抽出結果が表示されます。

kimi1980
質問者

お礼

回答ありがとうございます。 やりたいことは3つの表を比較した際に、下記が判明することです。 ・同じ英語名に対して複数の和訳がないこと(1つの英語名に対して一つの和訳名) ・もしも同じ英語名に対して複数の和約がある場合は色塗りがされるなど判明させる 同じ英語名に対して複数の和訳がある場合は統一したいのです。 また、もしも同じシリアルナンバーで複数の英語名が設定されている場合も判明させ、 1つのシリアルナンバーに1つの英語名というのを徹底させていきたいです。 教えていただいた方法でやってみたいと思います。 ありがとうございました。

関連するQ&A

  • 2つのセルに入力された異なる数値同士を比較して、もっとも近い値のある行

    2つのセルに入力された異なる数値同士を比較して、もっとも近い値のある行を検索する。 EXCELに関して表題の件で皆様の助言を何卒よろしくお願いします。 以下のようなサンプルがあるとします。 【A表】 #     x      y 1     13     712 2     22     1277 3     22     1559 4     22     2158 5     30     692 6     33     2294 7     34     1205 8     36     177 9     40     1851 10     52     762 ・ ・ ・ ・ これに対しての検索するデータが以下です。 【B表】 2#     2X      2Y 2     17.38    421.735 3     29.504   419.711 4     12.254   419.922 5     32.509   417.048 6     32.412   415.276 7     32.131   413.79 8     28.439   416.012 9     28.105   172.226 10    38.55    262.927 13    58.727   10.303 14    50.327   11.811 15    35.978   104.821 ・ ・ ・ ・ A表とB表のそれぞれ 【x ⇔ 2x】 【y ⇔ 2y】 の部分と比較し もっとも近い値から上位3つくらいまで一致したA表の行を抽出するための 関数、マクロを作成したいと思っていまして、過去ログ等調べて 色々試してみましたがなかなかうまくいきません。 【x 、 y】と【2x 、 2y】はそれぞれ同じ行同士の物で検索しなければならないというのが ネックになっているのでしょうか? あとA表、B表の総項目数は一致していません。 もっとも近い値を検索し、その行の【#】の数値を抽出するという関数は 過去ログから検索して作成することは出来たのですが、 2番目、3番目に近い値を検索し、#の数値を抽出することが出来ません。 言葉足らずで理解に苦しむかと思われますが、何卒皆様のご助力を よろしくお願い致します。 ※本文では分かり辛いので画像添付しました。ご参照下さい。

  • エクセル関数教えてください

    エクセルで2つの表を作成しています(シートは分けています)。 表1のA列には日本語の会社名(約300社)、B列にはそれを英語表記したものを入れています。 表2は表1とほとんど同じなのですが、会社名の順序がばらばらで、抜けているものもあります。 順序や抜けはそのままで、表Aの会社名に対応する英語表記を表2のB列に入れたいのですが、 使える関数はありますか? 教えていただけると助かります。

  • EXCELのDCOUNTA関数について

    EXCELで500名程度の名簿管理をしています。 DCOUTA関数を使って、「○○区に住んでいる女性の人数」等の抽出を行っていますが、下記のような不具合があります。 ・同じファイルに名簿シートと抽出シートを分けていますが、抽出シートで計算された数字が名簿シートの実数と一致しません。 (名簿シートの実数は手計算しました。) ↓ ・名簿シートに抽出シートと同じ抽出表をコピーしたところ、実数と一致しました。 ただ、上記のようだと、名簿シートに抽出表も貼りつけることになり、大変見にくいので、シートを分けてもきちんと結果が出るようにしたいのですが、どうしたらよいでしょうか。 なお、範囲名は漢字で「登録者」としています。 ご教授よろしくお願いします。

  • エクセル関数 複数条件

    いつもお世話になってます。 よろしくお願いします。 画像添付しているのは例なんですが Sheet1 と Sheet1-2 を関数を使って比較し、 一致した項目をSheet2へ抽出することはできますか? INDEX・MATCH関数で試してみましたが・・・うまくいきません。 何か方法があればご教授お願いします。

  • 日本語と比較する言語

    もともと比較言語学といえば、対照言語学とともに英語、フランス語、ドイツ語、スペイン語、ラテン語、ギリシャ語など似た言語で、同じ語族なのはどれでどのように分岐して、またどの部分が似ていてどの部分が違うという学問で欧米ですすんでいると思います。 日本語は孤立語説があり、あるいはアルタイ諸語説、オーストロネシア語説などもあったり、中国語からの影響などもありますね。 日本で主に英語との比較、方言について、他時々韓国語との比較もありますね。 ただ孤立語説だろうとされても、あまり遠い言語と比較しても違う部分ばかりで変数が多いと結論が出しにくいでしょうし。方言や韓国語だけ扱ってもそれぞれ、個別の話です。 もし日本語と比較して、意味があるとすればどの言語になるでしょう?

  • フランス語 OfficeのExcelでの関数について

    フランスに赴任となり、英語OS環境でフランス語OfficeがインストールされたPCを使用しています。 Excelの関数を使おうと思ったのですが、フランス語Officeでは日本語Officeと関数の表記の仕方(スペル)が異なるようです。 例えば、 today() は aujourdhui() countif() を使いたかったのですが、それもないようで、結局自分で数えなければならない状況です。 日本語(英語)Officeと同じ関数の使用方法があればその方法を、或いは、英仏関数対応表などあれば、教えて下さい。 よろしくお願い致します。

  • opencvを使って画像比較

    opencvを使って画像比較をしたいです。 具体的には、デスクトップの背景の一部分(4×4bitくらい)が、画面上にあれば処理を実行する、みたいにしたいです。(他のウィンドウなどで隠れていたら実行しない) 具体的にどのような関数を使えば作れますか? テンプレートマッチングという方法でいけそうなのですが、一旦プリントスクリーンキーなどで画面を保存して、それと切り取った4×4の画像を比較していく。のような感じにすればいいのでしょうか? そのような関数はあるのでしょうか? それと画面を一瞬で保存して、IplImageに保存する。みたいな関数はありますか? 下手くそな日本語ですが回答よろしくお願いします・・。

  • EXCELの表からの「抽出」、「転記」

    1.元帳(Sheet8)から転記した「金融機関向け提出資料」(Sheet10)があったので、こ れからまた転記して組単位で「No.」と「氏名」の表(Sheet5)を作りたいので  す。 2. 添付画像「金融機関向け提出資料」(Sheet10)において、9組を例にとると、No.7、No.16、No.17、No.23の、以下続  く。これ等をSheet5の表に抽出していきたいのです。Sheet5の構想は、1行目:組 番号、2行目は項目名:No.(A2)と氏名(B2)、3行目~27行目(25名分)に各  データを 抽出、転記する。一組分の範囲はA1:B27です。 3.組の数は9組ありますが、一組だけその方法を教えて頂ければ結構です。 4.尚、Sheet10のNo.は1~188です。Sheet10のG列に、組番号を転記しています。こ の組番号はSheet10では印刷領域外です。 5. Sheet10からSheet 5に抽出し、転記した最初の人の(1)No.と(2)氏名をオートフィ ルで下にコピーすると、同じ組のNo.と氏名が表示されたら良いのですが・・・。 6.私はマクロが使えません。INDEX関数やMATCH関数は使ったことがあります。 元帳(Sheet8)からINDEX関数で「金融機関向け提出資料」(Sheet10)に転記して います。 7.最初から9組分の表を作成しておいて、そこにデータを順次転記していく方法もあ るのかも知れません。 8.Sheet10の一部を「画像添付」します。 以上ですが、よろしくご指導ください。

  • 【エクセル】 VLOOKUPについて

    エクセル関数の VLOOKUPは範囲選択した表の左端の列しか検索対象に出来ないのでしょうか? 例えばSheet1に↓のような表があって     A      B     C     D     E 1 機種名   購入日   シリアルNo   メーカー名  ・・・・  2  X     07/01/01   123X         LLL 3  Y   07/02/03    456Y       MMM 4  Z   07/05/21    789Z        NNN 5  ・・・ 6  ・・・ Sheet2に↓のような表を作って、   A     B 1   シリアルNo   機種名 2   456 3   789  4   123 5    432 B列にVLOOKUPでsheet1の表から、シリアルNoに対応する機種名を表示 させることは出来ますか? 特にVLOOKUPにこだわってるわけではないので、他の方法でも出来る のであれば良い方法を教えてください。よろしくお願いします。

  • エクセル関数 IF

    エクセル関数 IF エクセル2000のデータ自動抽出に関してお願いします。 既存 Aファイル トヨタ 500 日産  300 新日鉄 800 ヤフー 100 スズキ 100 新規でつくりたい Bファイル スズキ 100 トヨタ 500 日産  300 というデータ表を作りたいと思っています。 Bファイルの企業名は手入力しますが1つ目のファイルと順番が違います。1つ目のファイルの企業名に一致する2列目の値を自動抽出する(100,500,300を自動抽出)式を教えてください。 宜しくお願いします。

専門家に質問してみよう