この記事では、エクセルでリストにあれば○や抽出(データの一致不一致、範囲内に値があれば、関数、含まれるかどうか)する方法について解説していきます。
ポイントは、以下の通りです。
・VLOOKUP関数を使ってリストに一致すれば○を表示する方法
・COUNTIF関数やIF関数を組み合わせてデータの存在を確認する方法
・FILTER関数を使ってリストに一致するデータを抽出する方法
・IFERROR関数を使ってエラー処理を行う方法
エクセル操作は1つ1つ追っていけば必ずうまくできるため、ぜひ本記事を参考にスキルアップにつなげてくださいませ♪
【Excel】エクセルでリストにあれば○と隣の列に表示する方法【vlookup関数】
それでは以下のサンプルを用いて、VLOOKUP関数を使ってリストにデータがあれば○を表示する方法を確認していきます。まず、サンプルデータを準備します。
A列に「商品名」、B列に「判定」と入力し、A2からA7に商品名(あんこ、柏餅、桜餅、大福、どら焼き、たい焼き)を入力してください。
E列とF列には参照用のリストを作成します。
E1に「在庫商品」、F1に「状況」と入力し、E2からE5に在庫がある商品名(あんこ、桜餅、桜餅、大福)を入力し、F2からF5にすべて「在庫あり」と入力してください。

あなたならできます(^^)/
B2セルに以下のVLOOKUP数式を入力します。
数式中の参照セルはクリックすることで自動入力されます。
対象セルをクリックで参照する際に、F4キー(もしくはFn + F4キー)も続けて押すと絶対参照になります。
=IF(ISERROR(VLOOKUP(A2,$E$2:$F$5,1,FALSE)),”×”,”○”)

この数式を詳しく解説します。
VLOOKUP(A2,$E$2:$F$5,1,FALSE)の部分では、A2セルの値をE2からF5の範囲で検索し、1列目(E列)の値を返します。
ISERROR関数は、VLOOKUPがエラーを返すかどうかを判定します。
リストにデータが見つからない場合はエラーが発生するため、ISERRORがTRUEを返します。
IF関数でISERRORがTRUEなら「×」、FALSEなら「○」を表示します。
1つずつ丁寧に理解することがポイント♪
ENTERで処理を確定させます。

B2セルの右下にカーソルを合わせて、ドラッグまたはダブルクリックでオートフィルを実行してください。
これでA列の商品が在庫リストにあれば「○」、なければ「×」が表示されます。
例えば、あんこ、桜餅、柏餅、大福には「○」が、どら焼き、たい焼きには「×」が表示されます。

【Excel】エクセルでリストにあれば○と隣の列に表示する方法【COUNTIF関数】
続いては、COUNTIF関数を使ってリストにデータがあれば○を表示する方法を確認していきます。
同じサンプルデータを使用して、B2セルに以下の数式を入力します。
数式中の参照セルはクリックすることで自動入力されます。
対象セルをクリックで参照する際に、F4キー(もしくはFn + F4キー)も続けて押すと絶対参照になります。
=IF(COUNTIF($E$2:$E$5,A2)>0,”○”,”×”)

この数式を詳しく解説します。
COUNTIF($E$2:$E$5,A2)の部分では、E2からE5の範囲でA2セルの値と一致するセルの個数を数えます。
一致するデータが見つかれば1以上の値が返され、見つからなければ0が返されます。
IF関数でCOUNTIFの結果が0より大きければ「○」、そうでなければ「×」を表示します。
この方法はVLOOKUPよりもシンプルで理解しやすく、処理速度も高速です。
ENTERで処理を確定させます。
B2セルの右下にカーソルを合わせて、ドラッグまたはダブルクリックでオートフィルを実行してください。

また、別の方法として以下のような数式も使用できます。
=IF(ISNUMBER(MATCH(A2,$E$2:$E$5,0)),”○”,”×”)


MATCH関数は指定した値がリスト内の何番目にあるかを返します。
見つからない場合はエラーを返すため、ISNUMBER関数でエラーでない(つまり数値が返された)場合に「○」を表示します。
【Excel】エクセルでリストにあれば○と隣の列に表示する方法【VBAマクロ】
続いては、VBAマクロを使ってリストにデータがあれば○を表示する方法を確認していきます。
見出し1で作成したサンプルデータと同じ構成を使用します。
A列に商品名、B列に判定結果、E列に在庫商品リストが配置されている状態です。
Alt + F11キーを押してVBAエディターを開きます。
挿入メニューから「標準モジュール」を選択し、新しいモジュールを作成してください。
あなたならできます(^^)/
以下のマクロコードを入力します。
Sub CheckProductInList()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim productName As String
Dim stockRange As Range
Dim foundCell As Range
Set ws = ActiveSheet
' 商品データの最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 在庫リストの範囲を設定
Set stockRange = ws.Range("E2:E5")
' 2行目から最終行まで処理
For i = 2 To lastRow
productName = ws.Cells(i, 1).Value
' 在庫リストで商品を検索
Set foundCell = stockRange.Find(productName, LookIn:=xlValues, LookAt:=xlWhole)
If Not foundCell Is Nothing Then
ws.Cells(i, 2).Value = "○"
Else
ws.Cells(i, 2).Value = "×"
End If
Next i
MsgBox "判定処理が完了しました!"
End Sub
このマクロコードを詳しく解説します。
Dim文で使用する変数を宣言しています。
lastRowでデータの最終行を取得し、stockRangeで在庫リストの範囲を設定します。
For文でA2セルから最終行まで順番に処理を行います。
Find関数を使って在庫リストから商品名を検索し、見つかれば「○」、見つからなければ「×」をB列に表示します。
1つずつ丁寧に理解することがポイント♪
F5キーを押してマクロを実行します。
マクロが正常に実行されると、「判定処理が完了しました!」というメッセージが表示されます。
このマクロの利点は、データ量が多い場合でも高速に処理できることです。
また、マクロを実行するだけで一括処理ができるため、繰り返し作業の効率化につながります。
さらに応用として、マクロにボタンを割り当てることで、ワンクリックで処理を実行できるようになります。
まとめ
この記事では、【Excel】エクセルでリストにあれば○や抽出(データの一致不一致、範囲内に値があれば、関数、含まれるかどうか)する方法について解説しました。
VLOOKUP関数とISERROR関数を組み合わせることで、リストに存在するかどうかを○×で判定できます。
COUNTIF関数を使用する方法は、よりシンプルで理解しやすく、処理速度も高速です。
MATCH関数とISNUMBER関数の組み合わせも、同様の結果を得られる有効な方法です。
マクロを使用する方法では、大量のデータでも高速に処理でき、ボタン一つで一括処理が可能になります。
VBAマクロは複雑な条件判定や繰り返し処理に特に威力を発揮します。
これらの関数を適切に使い分けることで、データの存在確認や抽出作業を効率化できます。
業務でのお菓子店の在庫管理や商品管理など、様々な場面で活用できる実用的なテクニックです。
エクセルの扱いになれ、さらに快適な毎日を過ごしていきましょう!