• ベストアンサー

エクセルで2列の順序が違うデータの照合方法

エクセル初心者なので教えてください。 A列、B列ともに500行ほどの数値があります。 A、B列の数値の順序は違います。 A列の数値に対し、B列の数値で一致しないものだけを 別の列(たとえばC列)に一度に自動に表示するようにするには どうしたら良いのでしょうか?  簡単な方法があれば、教えてください。

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

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

自称imogasi方式というものを紹介します。 例データ A2:C8 C列は関数の結果。作業列です。C列第1行は数値データなし、にしてください。 A列   B列   C列(作業列) 1 3 4 2 1 2 1 3 8 6 12 9 6 2 12 5 (準備) C2に=IF(COUNTIF($B$2:$B$21,A2)=0,MAX($C$1:C1)+1,"") と入れて、A列で最下行まで式を複写。 結果 上記C列。 意味は、A列の数値がB列に見つからない場合、上から 連番を振っている。 ーーー (抜き出し) C列1,2・・をF列に詰めて!抜き出します。 F2に=INDEX($A$1:$A$20,MATCH(ROW()-1,$C$1:$C$21,0),1) と入れて、B列のMAX数の行数(上例では2)だけ式を複写します。 結果 F2:F3 4 9 ーーー B-->A列に対しても同様のことを行う。 すると、B列にありA列に無い数が抜き出せる。 両者あわせて質問の答えになります。 ーー 上記の方法の欠点は 作業列を使う。この質問の特殊性から2列必要。 A->BとB->Aの2系列に分かれて出てしまう。 ということはありますが、理屈は比較的単純なやり方です。 ーー Googleなどで「imogasi方式」で照会すると、沢山過去のこのコーナーの「抜き出し」問題の質問が出ます。その中には作業列を使わない 関数での回答もある質問もあります。(相当難しいが)興味があれば見てください。 === VBAなどで色々なロジックで出来ますが略。

goo8013
質問者

お礼

回答ありがとうございました。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.6

ANo.3&4のjo-zenです。検証不足だったようで、若干修正させていただきます。 手順(2)で  C2セルに =IF(COUNT($D$1:D2)>MAX($C$1:C1),MAX($C$1:C1)+1,0) C3セル以降にコピー 手順(4)で  F1セルに  =IF(MAX(C:C)>=ROW(),VLOOKUP(ROW(),$C$1:$D$500,2,0),"")  F2セル以降にコピー で大丈夫かと思います。やってみてください。

goo8013
質問者

お礼

回答ありがとうございました。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.5

数式でなくても良いなら まずA,B列の先頭行に同じ項目名を付けてください。 「データ」「フィルタ」「フィルタオプションの設定」にて 抽出先:「指定した範囲」を選択 リスト範囲:A列を選択 検索条件範囲:B列の全データを選択 抽出範囲:C1を選択 これでOKを押してください。 ※A列に同じ値があり、それらを抽出しない場合は、 「重複するレコードは無視する」にチェックしてください。

goo8013
質問者

お礼

回答ありがとうございました。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.4

ANo.3のjo-zenです。補足します。 >欲を言えば、C列に出力された数値を上から詰めて表示するような ことが出来ないでしょうか? ⇒すっきりした関数で実現することは無理だと思います。VBAを使って処理する方法もとれなくはありませんが、VBAについての知識が必要になりますので、経験者以外は手を出さない方がいいかと思います。もちろん、ご自身で独学なりされて、できるようになればいいのですが。 関数のみを使う方法だと、作業セルを使うやり方になります。 #3からの流れでいけば、C列の前に1列挿入(上にあるC列のラベルをクリックし、C列全体を選択した状態で、右クリックから「挿入」を選べばOKです)します。すると今までのC列はD列になりますが、数式は自動的に整合されます。 C1セルに =COUNT($D$1:D1) C2セルに =IF(COUNT($D$1:D2)>C1,MAX($C$1:C1)+1,0) C3セル以降はC2セルをコピー してください。すると、D列に数字が表示されていなければ0(ゼロ)、表示されていれば、それが上から何番目かが表示されると思います。 あとは、例えば F列に上から詰めて結果を表示させるために、 F1セルに =VLOOKUP(ROW(),$C$1:$D$500,2,TRUE) F2セル以降は、F1セルをコピー で大丈夫かと思います。 

goo8013
質問者

お礼

回答ありがとうございました。 参考になりました。

goo8013
質問者

補足

回答ありがとうございました。 F列に上から詰めて結果を表示させようとしたのですがうまくできませんでした。 もう一度確認させてください。 手順として (1)C列の前に1列挿入 (2)C1セルに =COUNT($D$1:D1)  C2セルに =IF(COUNT($D$1:D2)>C1,MAX($C$1:C1)+1,0)  C3セル以降はC2セルをコピー (3)C列に0と*番目数字が表示 (4)F1セルに =VLOOKUP(ROW(),$C$1:$D$500,2,TRUE)  F2セル以降は、F1セルをコピー 結果→F列には0しか表示されませんでした。 間違った手順があれば教えてください、お願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.3

C列に上から連続で表示するということでなければ、次のような数式でいいかと思います。A列の数値をB列の中で検索して該当しない場合にC列に表示するやり方です。1~500行に数値が入っているとして、   C1  =IF(ISERROR(MATCH(A1,$B$1:$B$500,0))=TRUE,A1,"")   以下コピー B列の数値をA列の中で検索して該当しない場合には対応しませんので、D列などに、   D1  =IF(ISERROR(MATCH(B1,$A$1:$A$500,0))=TRUE,B1,"")   以下コピー と入れればいいかと思います。 順序が異なるので、難しいところがあります。C列だけで両方を上から詰めて表示するような関数を考えたかったのですが、・・・。

goo8013
質問者

お礼

回答ありがとうございました。 参考になりました。

goo8013
質問者

補足

jo-zenさん 早速試してみました、ありがとうございました。 欲を言えば、C列に出力された数値を上から詰めて表示するような ことが出来ないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

オートフィルタを使用する方法ですが如何でしょうか。 (1)見出し行がない場合、任意項目名で行挿入 (2)C列のC2に=COUNTIF(A:A,B2)=0を入力、A・B列の多い行数分まで下方向にコピー (3)任意データセルを選択→データ→フィルタ→オートフィルタ→C列のフィルタボタンでTRUEを選択

goo8013
質問者

お礼

回答ありがとうございました。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

A1セルと同じ値がB列にない場合に C1にはA1の値 =IF(COUNTIF(B:B,A1),"",A1) という形になります。 下フィルしてみてください。

goo8013
質問者

お礼

回答ありがとうございました。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelでの照合

    こんにちは。Excelで例えば、 A列     B列 8500    10000 1050    9300 5700    8500 10000    5700 9300    8500 上記のような場合、A、B両列にある数値を削除し、残りの数値のみ表示することは可能でしょうか? この場合、A列では1050が1行、B列では8500が1行だけ残るような感じです。 ちなみに、同じ行に同じ数値が入っている訳ではありません。 宜しくお願いいたします。

  • エクセルで2列の順序が違うデータの照合方法

    エクセルで約6000行くらいの在庫データがあります。 それぞれの行に、 1列目に商品番号があり、2列目に個数が記してあります。 そして、3列目に1列目とまったく同じ商品番号があり、4列目に単価が入っています。 ただし、1列目の商品番号と3列目の商品番号は順序がバラバラです。また1列目は登録上マスタデータなので、3列目の実棚在庫商品番号よりも量が多いです。 上記の状態で、1列目のデータと3列目のデータを照合し、 2列目の個数と4列目の単価をかけて、在庫の合計金額を知りたいのですが、可能でしょうか? もし説明不足等ございましたら追加でご説明いたしますので、 何卒力を貸して下さい。

  • エクセル 値が一致しないものを見つけたい

    お世話になります。 エクセルでA列B列にそれぞれ数値が入っている表があり、A列にはあってB列にはない数値を分かるようにしたいと思っています。      A列  B列   C列 1行目  1   1 2行目  1   5 3行目  4   0   4 4行目  5   1    5行目  1   0   1 ・A1、A2、A5の値が1であるように、A・B列とも重複する数値が入ることがあります。 ・A列とB列の値は1対1で対応し、例えばA1がB1と対応するならA2はB4と対応します。 この表ではA3、A5に対応する値がB列にないので、C列にその値を表示させています。 ・一致しない数字を分かるようにする方法にこだわりはなく、例のようにC列に値や×を表示させる、A列に色をつける、一致するものがあった数値は削除する等、なんでも構いません。 お分かりになる方、どうぞよろしくお願いいたします。

  • エクセルの使用方法

    エクセルの使用方法で質問があります。 1.あるA列10行に数式が入力されています。その数式はA列9行+B列10行の値です。B列10行に数値を入力する時、C列10行には日付を入力しています。このままだと、B列、C列に何も入力されていない行でも、A列だけは、延々と数値が表示されてしいます。できれば、B or C列に入力していない時は、A列の表示を空白にすることはできないでしょうか? 2.上記のようにA列には、数値が入っており、何行目まで数値があるのかは、B列、C列次第です。この状態で、A列の一番下の行のセルの数値を、固定したセルに表示させる方法はないでしょうか? ただこのシートは複数個作成し、あるシートでは、10行目が一番下だったり、あるシートでは25行目が一番下だったりする条件になります。 またB列にはマイナスの数値も入るので必ずしも行が増える程、A列の値が大きいわけではありません。 3.C列の日付ですが、たとえば「2009/8/8」と入力したら、「2008.8.8」と半角で表示するようにしてるのですが、これを「2008.08.08」と半角で表示する方法はないでしょうか? 4.エクセルで時々、あるセルの左上端が緑色になり<!>と表示されています。この<!>を押すと、いろいろコメントがでてくるのですが、エラーを無視するを選ぶと、消えます。一体これは何なんでしょうか? 出ないようにする方法はないでしょうか? 以上の件、どれでもよいのでご回答くださいますようお願います。

  • エクセルで行数の異なる2つの列の数値を新しい列にコピーする方法

    はじめまして。 エクセルで質問があります。 A列に数値データ、B列に0 or 1のデータがあります。 Sum(B:B)=A列の行数です。 このデータを、C列に1のときはA列のデータを1行下にコピー、0のときは""にしたいと考えております。 結果C列はB列を同じ行数 if文でC1セルに =if(B1=1,A1,"") と打つと、B列に0が入った途端、A列の数値が進みすぎてしまいます。 B列=0のときA列を進まなくする方法はあるのでしょうか? たとえばB1=1, B2=0, B3=1のとき、C3にはA2の数値を入れたいのですが、A3になってしまいます。 よろしくお願いいたします。

  • Excelで1列のデータを5列に振り分けする

    Excel2003でA列に1行にあるデータ(半角英数字)を 次のシートに、1行ずつコピーして、それを5列に振り分けするというマクロを作りたいです。 (ただし、コピーは2つずつの時もあります。) 元データ ●A列 B列 C列  1  2  3  4  5  ・  ・ 加工後 ●A列 B列 C列 D列 E列   1   1   2   2   3   3   4   4   5   5   上記のような感じです。ただデータは数字のみでなくて、英数字です。 Excelのマクロは全くの初心者で大変困っています。 どうぞよろしくお願いたします。

  • エクセルでの関数を使った条件抽出方法について

    エクセル初心者です。 エクセルでの関数を使った条件抽出方法についてどなたかご教授願います。 よろしくお願いします。 Sheet1の特定のセルに対して、Sheet2中にある条件に一致するセルの値を 表示させる方法がわかりません。 <具体的内容> 次のような2つのシートがあります。 Sheet1       -------------------------     A     B     C  1                2  2  費目1 3  費目2 4  費目3 ------------------------- Sheet2 -------------------------     A     B     C     D 1  2          1     2     3 3  費目2   100   200   300 4  費目1    30    10    20 5  費目3   150   350   250 ------------------------- Sheet1のC1のセルと同じ数値をSheet2の2:2行から探して、 一致する数値に該当する列の3~4行目の値を、 Sheet1のA2:A3の費目とSheet2のA3:A5の費目とが 一致するようにして、Sheet1のB2:B3に表示したいです。 このときSheet1のB2~B3にはどのような関数式を入れたらよいですか? 上の場合だと、Sheet1のB2=10、B3=200、B4=350となってほしいです。 HLOOKUP、COLUMNなど組み合わせてみたのですが、 全くうまくいきません。簡単ではないのでしょうか? どなたか教えてください、よろしくお願いします。

  • エクセルの列の表示が・・・

    なぜだか、エクセルの列の表示が、A,B,C・・・から 1,2,3と行と同じになってしまいました。 別に支障は無いんですが、できれば元のようにA,B,C に直したいんです。どうしたらよいのか教えて下さい。

  • EXCELでデータ照合

    こんにちは! Excelで、 一つ目のシート(SHEET1)に    A         B      C         D        E             1  名前      ID       住所      評価     性別 2  花子    00456    江戸川区    B    女 3  太郎    12360    港区       C     男  : 1987 という風に入っていて、 別のシート(SHEET2)には A         B         C         D         E     1    名前    ID     評価    所属     年齢 2    洋子    23459   (空欄)    さくら組      10 3   太郎    12360    (空欄)   もも組        8 : 1625 という風に、SHEET1とは行も列も違う順序で入っています。 SHEET1のIDナンバーに対応する評価を SHEET2のIDが同じであればC列の(空欄)にその人の評価を 自動的に入るように設定するにはどうすれば よいのでしょうか? 基本的な質問ですいません。よろしくお願いいたします!

  • エクセルデータの列と行を入れ替える方法をご存知の方、教えて下さい。

    エクセルデータの列と行を入れ替える方法をご存知の方、教えて下さい。 今、A列(1行目から1,000行目位まで)に日付、B~F列にそれぞれ数値のデータを入れていますが、それを1行目に日付、2~6行目に数値のデータと言うように、いわゆるタテとヨコを入れ替えたいのですが、何か良い方法は無いでしょうか。 1,000日分位のデータがあるため、手で打ち換えるのもちょっと・・・ データは日付列が1列、データ列が5列、数値のみで数式などは入っていませんし、セル結合もしていません。単純に6列×1,000行位のエクセルデータです。 また、入れ替えるのでなく別のシートに入力し直す方法でも、同じシートの未使用スペースにコピーアンドペーストする方法でも構いませんし、(エクセルが何列使えるか知りませんが)1,000列使えないようなら幾つかに分割しても構いません。 ご存知の方がおられましたらよろしくお願いします!

専門家に質問してみよう