![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?5a7ff87)
添付画像にあるように、B列とC列に単語のリストがあります。
B列とC列の差集合をE列に表示させたいと思っています。
なお、A列はB列の単語の頻度で、その数値をD列にも残したいです。
ちなみに、
=INDEX(A:A,SMALL(IF(COUNTIF(B:B,A$1:A$100),9999,ROW(A$1:A$100)),ROW(C1)))&""
というやり方でやっていたのですが、時間とマシンパワーを必要とするため、別の方法があったら、ぜひ教えていただきたいと思っています。
どうぞよろしくお願いしますm_ _m
![「2つのリストの差集合を出したい」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/8/2009_5497dc35c3624/M.jpg)
No.4ベストアンサー
- 回答日時:
こんにちは!
>時間とマシンパワーを必要とするため・・・
とありますのでVBAでの一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
尚、データは1行目からあるとしています。
Sub test() 'この行から
Dim i, k As Long
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Columns(3), Cells(i, 2)) = 0 Then
k = k + 1
With Cells(k, 4)
.Value = Cells(i, 1)
.Offset(, 1) = Cells(i, 2)
End With
End If
Next i
Application.ScreenUpdating = True
End Sub 'この行まで
※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。
お望みの方法でなかったらごめんなさいね。m(_ _)m
No.3
- 回答日時:
No.2です。
ごめんなさい、No.2で、数式中の数字を間違えました(行を削除した後の式を貼ってしまいました)。正しくは次の式です。=countif($C$7:$C$10,b1)=0
どうもありがとうございました。
ベストアンサーとさせて頂くか迷ったのですが、申し訳ありません。
教えていただいた式でも可能であることを確認しました。
色々な方法があることも分かって、とても勉強になりました。
ありがとうございました。
No.2
- 回答日時:
一発で算出しなくてもいいなら、該当/非該当を表示する作業列を作り、非該当の行だけ削除するのが簡単かと。
D・E列に何も入力されていないものとして話を進めます。
(1)A1:B4とC1:C4の行番号が重ならないよう、C1:C4をワークシート内のよその行か、別シートに移動。今回はC7:C10に移したとする。
(2)新しく空白セルとなったC1セルに次式を入力。
=countif($C$5:$C$8,b1)=0
(3)オートフィルでC1:C4を埋める。計算結果として「TRUE」か「FALSE」が表示される。
(4)C1:C4をコピーし、D1:D4に値のみ貼り付け。
(5)D1:D4を選択した状態で、置換の機能(Ctrl+H)により、「false」→「」(未入力)の置換を実行。
(6)D1:D4を選択した状態で、ジャンプのダイアログ(Ctrl+G)を開き、「セル選択」ボタンの中の「空白セル」を指定して「OK」ボタンを押下。
(7)空白セルのみ選択された状態となっているので、削除のダイアログ(Ctrl+ -(マイナス))で、「行全体」を指定して「OK」ボタンを押下。
No.1
- 回答日時:
>時間とマシンパワーを必要とするため、別の方法があったら、ぜひ教えていただきたい
今の「その」配列数式で限界を感じているなら、多少の手入れをしてもどのみち劇的な改善はありません。
素直に
D1:
=IF(COUNTIF(C:C,B1),"",ROW(D1))
以下コピー
F1:
=IFERROR(INDEX(A:A,SMALL(D:D,ROW(F1))),"")
G1:
=IFERROR(INDEX(B:B,SMALL(D:D,ROW(G1))),"")
以下コピー
などのようにしてしまえば、ほとんどストレスなしに結果を得られるはずです。
どうもありがとうございました。
ベストアンサーとさせて頂くか迷ったのですが、申し訳ありません。
色々な方法があることも分かって、とても勉強になりました。
大変感謝しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのリストにある文字を含むセルを、複数の色で色付けしたいです 2 2022/08/11 17:39
- Excel(エクセル) IFERROR、SMALL関数について 2 2022/08/22 23:40
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) 関数を教えてください。 2 2023/08/01 10:59
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
Outlook 電源OFFの受診の仕方
-
「生産性ソフトウェア」とは何...
-
web上にあるエクセルをショート...
-
複数の写真を1枚に印刷
-
会社PCのメールが更新されない
-
会社のOutlookにてメールを予約...
-
エクセルでXLOOKUP関数...
-
VBAで横データを縦データに変換...
-
office2016のパソコン2台インス...
-
teams設定教えて下さい。 ①ビデ...
-
Outlookで、任意のメールアドレ...
-
Windows 11で、IME言語バー(IM...
-
大学のレポート A4で1枚レポー...
-
Excelのセルの重複チェックが出...
-
VBA CSV出力について
-
WEBの記事を印刷する際にA...
-
Excelに貼ったリンクについて E...
-
1つのPCに「Excel 2010」「Exc...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
Excelで空白以外の値がある列の...
-
会社PCのメールが更新されない
-
Excel 日付を比較したら、同じ...
-
マイクロソフト 一時使用コード...
-
ウィンドウィズ メモ帳で日付だ...
-
MicrosoftOfficeの1ユーザー2...
-
Microsoft Formsの「個人情報や...
-
Officeの字体
-
エクセルでXLOOKUP関数...
-
Microsoft365で自動保存が出来...
-
Outlookで、任意のメールアドレ...
-
outlookのメールが固まってしま...
-
Microsoft 365 の一般法人向け...
-
Office2021を別のPCにインスト...
-
Microsoft 365のディフェンダー...
-
Excelに貼ったリンクについて E...
-
MicrosoftOffice2019なんですが、
-
Outlook で宛先が複数の場合の人数
おすすめ情報