ecoslymeです。
エクセル(Excel)で、特定の文字列を含む場合はこの数式を設定、含まない場合はこの数式を設定したいという場面はありませんでしょうか?
エクセルで関数の扱いに慣れてくると、エクセルでは何でもできる!と思う人も多いでしょう。
しかし、If関数の中でワイルドカード(*アスタリスク)を利用しようとすると、うまく反応してくれません。
ワイルドカードとは「*」を例とすると、「*東京*」と入力すれば「西東京」や「東京タワー」といった文字にも反応してくれる非常に便利な使い勝手の良い文字です。
この記事では、If関数でワイルドカード(*、?、~)を利用して、特定の文字列を「含む」場合と「含まない」場合にも反応する数式「Countif関数」をご紹介します。
この関数やテクニックを利用すると、新しいデータを更新しても欲しいデータに印が付くようになり、フィルタをかけてから印を付けるなどの手間が省かれます。
元データと結果
⇓
If関数の中で特定の文字を含む/含まないを確認する数式
それでは早速、IF関数の中で特定の文字を含むかどうかを確認する数式についてご紹介します。
ワイルドカードが鍵になってきます。
ワイルドカードについて
Countif関数と非常に相性が良いので、以下のワイルドカードの種類と意味についてはこの記事でも簡単にご紹介しておきます。
なお、ワイルドカードについては、別の記事で詳しく紹介したいと思います。
- ワイルドカードの種類と意味
ワイルドカード | 読み方 | 意味 |
* | アスタリスク | 任意の0文字以上の文字列を検索 |
? | 疑問符 | 任意の一文字を検索 |
~ | チルダ | ? や * の前にくっつけて、文字列中の「*」や「?」自体を検索 |
Countif関数との組み合わせで「含む」条件を使いこなす
これだけでは意味がわからないと思いますので、それではCountif関数についてもご紹介します。
以下のような表があり、B列とC列に”○”を付ける数式をご紹介します。
・A列:商品名
・B列:「デスク」という文字を含む場合、”○”を付ける
・C列:「高級」という文字を含まない場合、”○”を付ける
以下の数式をB2セルに入力してみましょう。
「 =IF(COUNTIF(A2,”*デスク*”),”○”,””) 」
IF関数のブロックとCountif関数のブロックについて説明します。
- IF関数のブロック
=IF | ( COUNTIF ( A2 , “” * デスク * ” ), | “○”, | “” ) |
|
|
| |
|
|
- Countif関数のブロック
( COUNTIF | ( A2, | “*デスク*” ), |
|
|
|
|
|
まず、IF関数の中に「 Countif ( A2 , “*デスク*” ) 」という数式が入っています。
なお、この数式だけをエクセルに入力すると、「1」という数字になります。
Countif関数の詳細に関しては以下の記事をご覧ください。
【エクセル】人数カウントに便利! Countif 関数の使い方を教えます
デスクという文字を含んでいれば、真の場合(○)となり、デスクという文字を含んでいなければ、偽の場合(空白)となります。
ワイルドカード(*)で「デスク」という文字を囲っているので、「〇〇デスク」とか「○デスク○○○○」という文字に反応します。
「○○デスク」という「デスク」の前に2文字だけある商品に限定したい場合は、「??デスク」とすればOKです。
数式を下の行へコピペすると、以下の表のように○がつきます。
Countif関数との組み合わせで「含まない」条件を使いこなす
次に、IF関数で特定の文字列を含まない場合の数式についてご紹介します。
上でご紹介した、特定の文字列を「含む」場合の数式を理解していれば非常に簡単です。
真の場合と偽の場合の数式を入れ替えればOKです。
具体的には、以下の数式を入力すればOKです。
「 =IF(COUNTIF(A2,”*高級*”),””,”○”) 」
「高級」という文字を含んでいれば空白にして、「高級」という文字を含んでいなければ”○”が付くようになっています。
下の行に数式をコピペすれば、以下の表のように○がつきます。
応用編
上の数式では、○か空白しか表示していませんが、この「”○”」や「”” ※空白」の部分に別の数式を入れることも可能です。
他の数式との組み合わせで、実務で利用できるエクセルの形にしてみましょう。
最後に
いかがでしたでしょうか。
〇〇という文字列を含む場合この計算をして欲しい、とか身の回りでは意外と多いケースでした。
Countif関数を利用すればワイルドカードを利用できるということを頭の片隅に入れておけば、何かのときに役立つかと思います。
ちなみに、「デスク」という文字でフィルタしてから、別の列に”○”を付ける方法もありますが、これではデータが更新されるたびに同じ操作をしなければなりません。
ルーティンの業務であれば、予め数式を設定しておき、少しづつ効率化を測れるようにした方が努力が時短のために意味ある結果となります。
どんどんエクセルの知識を増やして、無駄な業務をなくしていきましょう。