• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:A列にあってB列にはない単語をC列に残したいです。)

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

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

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

  • ベストアンサー
  • 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/7941)
回答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