- ベストアンサー
エクセルで異なる単語を抽出して残す方法
- エクセルでA列とB列にそれぞれ単語が入力されている場合、A列にはあるがB列にはない単語を抽出してC列に残す方法を教えてください。
- 重複している単語を削除し、A列に存在する単語のみをC列に入れる方法を教えてください。
- 最終的には、C列に空のセルを作らず、上のほうの行に詰めた形に整える方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一気に!となるとすでに回答されているように配列数式等を使う必要があります。 そこで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
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
>関数を…関数を… ムダなアプローチです。 手順: A1からA100まであるとして。 C1に =INDEX(A:A,SMALL(IF(COUNTIF(B:B,A$1:A$100),9999,ROW(A$1:A$100)),ROW(C1)))&"" と記入し,コントロールキーとシフトキーを押しながらEnterで入力します 下向けにコピーします。
お礼
ご回答いただき、どうもありがとうございました。 質問の文章がおかしいことに気づいていませんでした。ご指摘いただき、ありがとうございます。おっしゃる通りで、エクセルの知識がほとんどないからか、関数さえできれば何でも出来るのかと思ってしまっていました。 教えて頂いた式を入れて実行してみたのですが、なぜかうまくいかず。。。せっかく教えて頂いたのに申し訳ありません。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 (1)A・B列に見出し行(文字列は任意)を挿入 (2)C2に=COUNTIF(B:B,A2)=0を入力、下方向にコピー (3)オートフィルタを設定→C列のフィルタボタンでTRUEを選択→A列をコピー、 C列に貼り付け→オートフィルタの解除
お礼
ご回答いただき、どうもありがとうございました。 教えていただいたようにやってみたところ、うまく出来ました。 一つのことを実行するのに、何通りものやり方があることがわかり、勉強になりました。 ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
作業列を例えば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)),"")
お礼
早速ご回答いただき、どうもありがとうございました。 教えていただいた通りにやってみたのですが、なぜかうまく行きませんでした。 エクセルに関する知識が不足しているんだと思います。 せっかく教えていただいたのに申し訳ありません。 いずれにしても、どうもありがとうございました。
お礼
どうもありがとうございました! マクロについての知識はなかったのですが、書いていただいた通りにやってみたところ、すぐに欲しい結果を得ることができました。 急いでいたので、大変助かりました。