アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで、「A列とB列にそれぞれ単語がたくさん入力されています。A列にはあるが、B列にはない単語を抽出して、C列に残す」ということをやりたいのですが、どなたか関数を教えていただけないでしょうか?
すみませんが、エクセルの関数を教えていただけないでしょうか。

単語のリストが2つあります。
A列に、片方のリストを入れ、B列にもう片方のリストを入力してあります。

■やりたいこと 1: 2つのリストには重複している単語があるため、重複している単語は削除して、A列だけに存在する単語をC列に入れたいと思っています。

■やりたいこと 2: 最終的には、C列には、空のセルを作らず、上のほうの行に詰めた形に整えたいと思っております。

以上の2つについて、どちらかだけでもやり方を教えていただければ、大変助かります。

どうぞよろしくお願いします。

A 回答 (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
    • good
    • 9
この回答へのお礼

どうもありがとうございました!

マクロについての知識はなかったのですが、書いていただいた通りにやってみたところ、すぐに欲しい結果を得ることができました。

急いでいたので、大変助かりました。

お礼日時:2012/02/07 21:29

添付図参照

「A列にあってB列にはない単語をC列に残し」の回答画像5
    • good
    • 1
この回答へのお礼

ご回答いただき、どうもありがとうございました。

せっかく画面キャプチャまでして頂きましたが、拝見しただけでは理解できませんでした。。。理解力不足で申し訳ありません。

お礼日時:2012/02/07 21:31

>関数を…関数を…



ムダなアプローチです。


手順:
A1からA100まであるとして。
C1に
=INDEX(A:A,SMALL(IF(COUNTIF(B:B,A$1:A$100),9999,ROW(A$1:A$100)),ROW(C1)))&""
と記入し,コントロールキーとシフトキーを押しながらEnterで入力します
下向けにコピーします。
    • good
    • 2
この回答へのお礼

ご回答いただき、どうもありがとうございました。

質問の文章がおかしいことに気づいていませんでした。ご指摘いただき、ありがとうございます。おっしゃる通りで、エクセルの知識がほとんどないからか、関数さえできれば何でも出来るのかと思ってしまっていました。

教えて頂いた式を入れて実行してみたのですが、なぜかうまくいかず。。。せっかく教えて頂いたのに申し訳ありません。

お礼日時:2012/02/07 21:33

一例です。


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

ご回答いただき、どうもありがとうございました。

教えていただいたようにやってみたところ、うまく出来ました。

一つのことを実行するのに、何通りものやり方があることがわかり、勉強になりました。

ありがとうございました。

お礼日時:2012/02/07 21:36

作業列を例えば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)),"")
    • good
    • 1
この回答へのお礼

早速ご回答いただき、どうもありがとうございました。

教えていただいた通りにやってみたのですが、なぜかうまく行きませんでした。
エクセルに関する知識が不足しているんだと思います。

せっかく教えていただいたのに申し訳ありません。
いずれにしても、どうもありがとうございました。

お礼日時:2012/02/07 21:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A