Excel

【Excel】エクセルでリストにあれば○や抽出(データの一致不一致、範囲内に値があれば、関数、含まれるかどうか)する方法

当サイトでは記事内に広告を含みます
技術ブログ特化メルマガはこちら

この記事では、エクセルでリストにあれば○や抽出(データの一致不一致、範囲内に値があれば、関数、含まれるかどうか)する方法について解説していきます。

ポイントは、以下の通りです。

・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マクロは複雑な条件判定や繰り返し処理に特に威力を発揮します。

これらの関数を適切に使い分けることで、データの存在確認や抽出作業を効率化できます。

業務でのお菓子店の在庫管理や商品管理など、様々な場面で活用できる実用的なテクニックです。

エクセルの扱いになれ、さらに快適な毎日を過ごしていきましょう!