エクセルで異なる単語を抽出して残す方法

このQ&Aのポイント
  • エクセルでA列とB列にそれぞれ単語が入力されている場合、A列にはあるがB列にはない単語を抽出してC列に残す方法を教えてください。
  • 重複している単語を削除し、A列に存在する単語のみをC列に入れる方法を教えてください。
  • 最終的には、C列に空のセルを作らず、上のほうの行に詰めた形に整える方法を教えてください。
回答を見る
  • ベストアンサー

A列にあってB列にはない単語をC列に残したいです。

エクセルで、「A列とB列にそれぞれ単語がたくさん入力されています。A列にはあるが、B列にはない単語を抽出して、C列に残す」ということをやりたいのですが、どなたか関数を教えていただけないでしょうか? すみませんが、エクセルの関数を教えていただけないでしょうか。 単語のリストが2つあります。 A列に、片方のリストを入れ、B列にもう片方のリストを入力してあります。 ■やりたいこと 1: 2つのリストには重複している単語があるため、重複している単語は削除して、A列だけに存在する単語をC列に入れたいと思っています。 ■やりたいこと 2: 最終的には、C列には、空のセルを作らず、上のほうの行に詰めた形に整えたいと思っております。 以上の2つについて、どちらかだけでもやり方を教えていただければ、大変助かります。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 一気に!となるとすでに回答されているように配列数式等を使う必要があります。 そこでVBAでの一例です。 1行目は項目行でデータは2行目からあるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long Application.ScreenUpdating = False For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(Columns(2), Cells(i, 1)) = 0 Then Cells(Rows.Count, 3).End(xlUp).Offset(1) = Cells(i, 1) End If Next i Application.ScreenUpdating = True End Sub 'この行まで ※ ご希望の方法でなかったらごめんなさいね。m(_ _)m

junpei12
質問者

お礼

どうもありがとうございました! マクロについての知識はなかったのですが、書いていただいた通りにやってみたところ、すぐに欲しい結果を得ることができました。 急いでいたので、大変助かりました。

その他の回答 (4)

noname#204879
noname#204879
回答No.5

添付図参照

junpei12
質問者

お礼

ご回答いただき、どうもありがとうございました。 せっかく画面キャプチャまでして頂きましたが、拝見しただけでは理解できませんでした。。。理解力不足で申し訳ありません。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

>関数を…関数を… ムダなアプローチです。 手順: A1からA100まであるとして。 C1に =INDEX(A:A,SMALL(IF(COUNTIF(B:B,A$1:A$100),9999,ROW(A$1:A$100)),ROW(C1)))&"" と記入し,コントロールキーとシフトキーを押しながらEnterで入力します 下向けにコピーします。

junpei12
質問者

お礼

ご回答いただき、どうもありがとうございました。 質問の文章がおかしいことに気づいていませんでした。ご指摘いただき、ありがとうございます。おっしゃる通りで、エクセルの知識がほとんどないからか、関数さえできれば何でも出来るのかと思ってしまっていました。 教えて頂いた式を入れて実行してみたのですが、なぜかうまくいかず。。。せっかく教えて頂いたのに申し訳ありません。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 (1)A・B列に見出し行(文字列は任意)を挿入 (2)C2に=COUNTIF(B:B,A2)=0を入力、下方向にコピー (3)オートフィルタを設定→C列のフィルタボタンでTRUEを選択→A列をコピー、    C列に貼り付け→オートフィルタの解除

junpei12
質問者

お礼

ご回答いただき、どうもありがとうございました。 教えていただいたようにやってみたところ、うまく出来ました。 一つのことを実行するのに、何通りものやり方があることがわかり、勉強になりました。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

作業列を例えばC列に作ってD列にお求めの表を作るとしたら次のようにすればよいでしょう。 2行目から下方にデータがあるとしてC2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(A2="","",IF(AND(COUNTIF(A$2:A2,A2)=1,COUNTIF(B:B,A2)=0),MAX(C$1:C1)+1,"")) D2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(ROW(A1)>MAX(C:C),INDEX(A:A,MATCH(ROW(A1),C:C,0)),"")

junpei12
質問者

お礼

早速ご回答いただき、どうもありがとうございました。 教えていただいた通りにやってみたのですが、なぜかうまく行きませんでした。 エクセルに関する知識が不足しているんだと思います。 せっかく教えていただいたのに申し訳ありません。 いずれにしても、どうもありがとうございました。

関連するQ&A

  • エクセルでA列B列C列の重複するレコードのみを表示

    エクセルのA列とB列とC列で重複するレコードのみを抽出して別の列に表示させたい。 エクセルのA列とB列とC列にそれぞれ1000行くらいのデータがあります。 それぞれの列内には重複レコードがあります。 この条件の中で 「A列とB列とC列に重複するデータすべて」 を抽出したいのですが、どんな方法がありますか。 抽出されたデータで重複レコードの場合は1件のみで表示したいです。 よろしくお願いします。 例   A   B   C   抽出  1-001-002--002--002 2-002-002--005--007 3-003-007--007--008 4-007-008--008--011 5-008-008--010 6-008-010--011 7-011-011--012 8-013-014--013

  • エクセルでB列とC列で重複する語の頻度数合計

    エクセルの処理の質問です。 2つの単語リストがあり、下記のように、B列とC列に入力してあります。 A列は、B列の単語リストの頻度です。 ------------------ A列 B列 C列 D列 4 and and 3 be the 5 stay type 4 the zoo ------------------ やりたいことは、 上記、B列とC列で重複している単語を見つけて その重複語の頻度数(A列)を合計して、D1のセルに入力したいと思っています。 上記の例の場合、D1には 8 が入ることになります。 このようなことは可能でしょうか。 やり方をご存知の方、教えていただけると大変たすかります。 よろしくお願いします。

  • A列とB列の合計を行ごとにC列に表示させたい

    お早うございます。エクセルのセルの計算で教えてほしいのですが、A列とB列の合計を行ごとにC列に表示させたいのです。例えばA1のセルに“1", B1のセルに“2"と入れます。それで、C1のセルに“=A1+B1"と入力します。そうするとC1のセルは“3”と表示されますよね。そこで同じように違った数字の合計を100行ほどそれぞれC列に表示させたいのです。セルごとではなく縦全部列ごとでもかまいません。宜しくお願いします。

  • EXCELでA列とB列の文字が合わせてC列に入るやり方を教えて欲しいで

    EXCELでA列とB列の文字が合わせてC列に入るやり方を教えて欲しいです。 例 A1セルは04+  B1セルは2000 C列に04+ 2000のように作りたいです(真ん中に1個スペース)。 セルが多すぎて、一個ずつやるのは大変時間かかりますので、関数のやり方をご教示ください。 よろしくお願いします。

  • エクセルで A列に商品名 B列に商品番号 C列に管理者 が入っています

    エクセルで A列に商品名 B列に商品番号 C列に管理者 が入っています。 A B C あ 001 佐藤 い 002 鈴木 う 003 田中 え 004 伊藤 お 005 三木 以下600行くらい続いています。 商品名は重複していません。 D列を空列にしE列に商品名をいくつか並べたときに、 F列とG列に商品番号と管理者を表示させたいのですが、 どの関数を使えばいいのかよくわかりません。 環境はエクセル2003です。

  • B列とC列の両方に存在する単語を抽出したい

    エクセルで、添付画像のように、「A列に頻度、B列に単語」が書かれています。 B列とC列の両方にある単語を抽出して、「E列に単語を、D列にその単語の頻度(A列の情報)」を書き出したいと思っています。 良い方法をご存知のかた、教えていただけますでしょうか?m_ _m

  • AとBに同じ文字があった場合Cを読み込む

    質問です。 エクセルでシートを2つ使用し、 sheet1のA列とsheet2のA列を比べ同じ単語が記載されていた場合に、 sheet2の同行B列のセルの内容をsheet1のB列に表示させたい場合は sheet1のB列にどのような関数式を入力すればいいでしょうか。 例として、sheet1が商品一覧シート sheet2が仕入れ先一覧シートで sheet1 A列5行目には 黄色いたんぽぽ と記載があり([]も含む) sheet2 A列8行目には たんぽぽ仕入れ先 と記載のあるセルがあって、 sheet1 B列5行目に、sheet2 B列8行目に記載のある「蒲公英株式会社」を表示させたい 上記の場合ですと、たんぽぽ という単語だけを認識させたいのです。 ただし、単語に関してはある言葉(この場合はたんぽぽ)を指定せずに、sheetA列x行目(比較したい単語の記載のある行)とsheet2A列全体を比べて 同じ単語があれば上記のように表示させる という内容ができればと思っています。 セル内が一致した場合のものや単語を比較して○×を付けるという質問はあったのですが、セル内の一部が一致した場合というものが見つかりませんでした。 わかりづらく式も載せる事ができずすみませんが、詳しい方がいらっしゃいましたらご教授ください。

  • エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させた

    エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させたい。 エクセルのA列に約1,000行くらいのデータが有ります。 このA列内で重複レコードがあります。 B列に約1,000行くらいのデータが有ります。 B列内でも重複レコードが有ります。 この条件の中で (1)A列にもB列にあるデータすべて (2)A列にしかないデータすべて (3)B列にしかないデータすべて を抽出したいのですが、どんな方法がありますか? それで (1)をC列 (2)をD列 (3)をE列 に並べて表示させたいです。 さらに抽出されたデータで重複レコードの場合は1件のみで表示したいです。 複数の操作を繰り返すのではなく C,D,E列に式を入れるだけで済ませる事は可能でしょうか? よろしくお願いします。 例    A   B    C   D   E 1-001-002--001--004--007 2-002-002--002--006--008 3-001-001--005--010 4-005-007 5-001-005 6-004-005 7-004-008 8-010-007 9-006-007 A列には001が3個、002が1個、005が1個有ります。 B列には001が1個、002が2個、005が2個有ります。 A列にもB列にも有るのは、001と002と005ですから これがC列に表示されます。 でそれぞれA列にもB列にも複数有りますが、1個として判定なので よって、C列には 001 001 001 001 002 002 005 005 と表示ではなく 001 002 005 と表示したい。 次にD列はA列に有る物だけですから 004 006 010 となります。B列には004は2個有りますが同じ値なので 004 004 006 010 では無く004は1個の表示です。 E列はB列のみのデータなので 007 008 です。 同じくB列には007が3個有りますが1個ともなします。 007 007 007 008 では無く 007 008 です。

  • エクセルでの列と列の比較、重複データ個数抽出

    すいません。どなたか教えてください。 今、エクセル2003を使用しているのですが、ある条件でデータの個数が抽出出来ません。 お知恵をお貸しください。   A列 B列 1 あ   あ 2 い   う 3 う    い 4 え    5 お   か A列とB列を比べると、「あ、い、う」の3つのデータが重複しています。 そこで、一つのセルで3個とい値を返したいです。 条件として、 ・計算用のシートや別セルを使わずに、例えば、C1などの1つのセルの中で関数を使用して個数を出したいです。 ・できたらマクロも使用しないでやりたいです。 ・数字ではなく、文字列の比較で、空白行もあります。 やはり、列同士の比較は一つのセルの中でやることは不可能なのでしょうか? どなたかよろしくお願いいたします。

  • excelVBA でA+B列をファイル書き出し

    excel2003の VBA で、開いているシートのA列(項目行)とB列(データ)を抜粋してB列の1行目のセルに入力されているデータをファイル名として新しいEXCELファイル(B列の1行目のセルに入力されているデータ.xls)として書き出したいのです。また、B列以降も、A列+C列で1ファイル、A列+D列で1ファイル・・・のように列にデータが記載されているまでファイルとして書き出したいのです。 このような書き出しVBAを教えて下さい。宜しくお願いします。

専門家に質問してみよう