エクセル(Excel)ではセル内の特定の文字をカウントできる「COUNTIF関数」というものが用意されています。データ入力をする機会のある方にとっては、使うケースがあるかもしれません。データを収集して分析する際によく使われるため、学生・社会人を問わず集計時に役に立つ関数です。
この記事では、COUNTIF関数の使い方を解説します。記事の後半では、COUNTIF関数でよく使われる演算子やワイルドカードを使用したあいまい検索の仕方を解説するので、ぜひ参考にしてください。
目次
エクセルで特定の文字をカウントする方法
エクセルでは、COUNTIF関数を使えば特定の文字をカウントすることができます。ここではCOUNTIF関数の使い方を解説します。
COUNTIF(カウントイフ)関数の使い方
「特定の文字をカウントする」とは、どのような時に使うのでしょうか?例えば、名簿の中で東京出身の人の人数を数えたり、点数が90点以上の人の数をカウントしたり、1ヶ月間の中で、雨の日は何日あったのかカウントする際に有効です。数式は下記のようになります。
=COUNTIF(A1:B8,”東京都”)
COUNTIF関数の第1引数は範囲、第2引数には検索条件を指定します。第1引数にはセルの範囲を配列で指定します。ここではA1セルからB8セルまでを指定しました。マウスでドラッグする方が早いです。
第2引数には”東京都”と入力しました。「東京都」と入力されたセル番地を指定しても構いません。文字列を直接入力する場合は、ダブルクオーテーションマークで囲うようにしましょう。
COUNTIF関数の検索条件でよく使われる比較演算子は下記を参考にしてください。
演算子の種類 | 意味 | 入力値の例 |
= | 等しい(イコール) | =100(100と等しい) |
<> | 等しくない | <>100(100ではない,100以外) |
< | ~未満 | <100(100未満) |
> | ~より上 | >100(100より上) |
<= | ~以下 | <=100(100以下) |
>= | ~以上 | >=100(100以上) |
検索条件は「〇〇と一致したら」「〇〇より大きかったら」「〇〇以上だったら」というようにカウントする際の条件を記述します。
COUNTIF関数でよく使う比較演算子
COUNTIF関数では様々な比較演算子を使って検索条件を指定できます。ここでは代表的な比較演算子の使い方を詳しく解説します。
イコール(=)
まずはイコール(=)です。値が等しいことを表す比較演算子になります。実際にExcelのCOUNTIF関数に当てはめてみると、=COUNTIF(セル範囲,”=100″)というように書くことができます。
この場合は、セルに入力された値が100と等しかったら1つカウントされます。イコールは数値だけではなく、文字や⚪︎×△のような記号も検索条件に使うことができます。
「〇(丸)が何個ついたかカウントする」「〇〇という文字が何回記入されているかカウントする」といった、幅広い使い方ができるのが=(イコール)になります。
不等号(<>)
次に不等号(<>)です。エクセルの関数で不等号を表すには、大なり小なりで表現します。=に斜線を引いた≠(ノットイコール)は使うことができません。
エクセル初心者の方は「<>」という表記を見ても何を指すかわからないかもしれませんが、=(イコール)の反対だと思ってもらえれば大丈夫です。「〇〇と等しくなかったらカウントする」という仕組みになります。
=(イコール)とどう使い分けるのか悩んでしまうかもしれませんが、「〇〇ではない人」という検索条件を設定する際は、不等号の方がおすすめです。
例えば春夏秋冬のうち、好きな季節のアンケートを実施した場合に、「春を選ばなかった」人をカウントするようなケースでは不等号が使われます。COUNTIF関数の数式は、=COUNTIF(範囲,”<>春”)という形になります。
小なり(<)
次に小なりです。<100と表せば100より小さい、<=100という風に表せば100以下という検索条件にできます。
大なり(>)
次に小なりです。<100と表せば100より小さい、<=100という風に表せば100以下という検索条件にできます。
ワイルドカードを使ったCOUNTIF関数の応用
エクセルをある程度使ったことがある方なら、「ワイルドカード」という単語を聞いたことはないでしょうか?ワイルドカードというのは「あいまい検索」をする際に用いるテクニックです。COUNTIF関数では、完全に一致したワードで検索されるので、あいまい検索と使い分ける必要があります。
例えば”木”という漢字が付いた苗字の人をカウントする際は、=木という記述方法では表すことができません。「木」という苗字の人しかカウントしてくれません。
そこでワイルドカードを使用します。エクセルのCOUNTIF関数ではアスタリスク(*)とクエスチョンマーク(?)というワイルドカードを使うことができます。
クエスチョンマーク(?)は1文字分の代わりになります。「?木」と記述すれば「松木」「高木」はカウントされますが、菅無木さんのように木の前に2文字以上あるとCOUNTIF関数でカウントされなくなります。
一方、アスタリスク(*)は何文字分でも代わりになります。*木*さんと記述すれば「菅無木」「木村」でもカウントすることができます。
木と付く苗字をカウントしたい場合は、=COUNTIF(セルの範囲,”*木*”)という風に木の両側にアスタリスクをつけることで実現可能です。
ワイルドカードの基本: アスタリスク(*)とクエスチョンマーク(?)
ここからは、Excelで特定の文字列を部分一致でカウントする方法について、ワイルドカード(アスタリスク(*)とクエスチョンマーク(?))の活用を中心に解説します。
- アスタリスク(*): 任意の文字列を代表し、”apple”を含むすべてのセルを柔軟に検出する場合に役立ちます。
- クエスチョンマーク(?): 任意の単一文字を示し、細かな文字パターンの検索に適しています。
これらのワイルドカードを使ったテクニックは、Excelでデータを分析し、特定の条件にマッチする情報を迅速に見つける上で非常に有効です。
Excelでの文字カウント方法
特定の文字がセル内にいくつあるかを知るには、LEN関数とSUBSTITUTE関数の組み合わせが鍵となります。このアプローチでは、特定の文字を含むセルの総数を正確に把握することができます。
特定の文字を含まないセルのカウント
COUNTIF関数を用いて、特定の文字を含まないセルの数をカウントする方法も、データセットの分析において有用です。これは、特定の条件を満たさないデータポイントの識別に役立ちます。
COUNTIF関数とその応用
COUNTIF関数は、特定の条件に基づいてセルをカウントするのに最適なツールです。アスタリスク(*)を使用することで、”apple”を含む任意の文字列を持つセルを柔軟にカウントすることが可能になります。
COUNTIF関数と他の関数を組み合わせる
エクセルのCOUNTIF関数では様々な条件を自由に設定して数をカウントできますが、出力される値はどうしても数字になってしまいます。カウントの結果、文字を出力することはできないのでしょうか?
そこで、IF(イフ)関数と組み合わせてみましょう。COUNTIF関数とIF関数を組み合わせることで、文字を出力することができますので、そちらの方法を解説していきます。
各都道府県の出身者数をカウントして、0人だった場合に「該当なし」という文字列を出力するように設定します。以下のようにIF関数の中にCOUNTIF関数を記述しましょう。
=IF(COUNTIF(B1:B8,”福岡県”)=0,”該当なし”,COUNTIF(B1:B8,”福岡県”))
この数式は、COUNTIF関数で「福岡県」という文字列を検索して、0だったら該当なし、0ではなかった場合にカウントした数を出力するという処理内容です。カンマやダブルクオーテーションマーク、丸かっこが多く、複雑な処理ですので、慣れない方は、一度上記の式をコピー&ペーストしてからそれぞれのシートに合うように調整することをおすすめします。
COUNTIF関数に関連する他の関数
COUNTIF関数のように文字数をカウントしたり、セルの中身を検索することができる関数はいくつも存在します。ここでは、エクセルで使える関連性の高い関数を解説します。
COUNTIFS(カウントイフス)関数で複数の検索条件を設定
COUNTIF関数では、検索条件を1つしか設定できません。点数が30点以上かつ、90点未満の人数をカウントする場合など、複数の検索条件を設定する場合は、COUNTIF関数が使えないのです。そこで、COUNTIFS(カウントイフス)関数を使いましょう。引数は下記のようになります。
=COUNTIFS(範囲1, 検索条件1, 範囲2, 検索条件2, …)
検索条件が増える分、範囲と検索条件を2つ以上設定することになります。COUNTIFS関数は数式の書き方次第で「〇〇かつ△△」というAND条件か「〇〇または△△」というOR条件を設定可能です。例えば=COUNTIFS(A1:A10,>=10,A1:A10<20)という数式にすれば10以上かつ20未満という条件式を設定できます。
たとえば、ある商品の売上データから、特定の地域で一定期間内に売上が100件以上の商品を探す場合、COUNTIF関数を使って「地域」と「期間」と「売上件数」という3つの条件を組み合わせて検索することができます。Excelでは、このような複数条件の検索を行う際には、COUNTIFS関数を使用しますが、COUNTIF関数でも条件を工夫することで同様の結果を得ることが可能です。
複数条件の設定方法は、COUNTIF関数内で”&”記号を使って条件を連結させる方法があります。例えば、=COUNTIF(A1:A100, ">=100"&B1:B100, "=Tokyo")
という形で、A列に100以上、かつB列に東京という条件を満たすセルの数をカウントできます。また、複数のCOUNTIF関数を組み合わせて、AND条件やOR条件を表現することも可能です。
さらに、COUNTIF関数を使って空白セルではないデータを検索したり、特定の範囲や日付に基づいてデータを分析したりすることもできます。これにより、エクセルを使った報告やデータ分析がより効率的かつ正確に行えるようになります。エラーが出た場合は、条件の設定や範囲指定を見直すことが大切です。
一方で、=COUNTIFS(A1:A10>=100,A1:A10<20)という数式にすれば100以上または20未満という条件式を設定できます。
COUNT(カウント)関数
COUNT関数は、引数に指定した範囲のうち文字列の含まれるセルを数える関数です。数式は下記のようになります。
=COUNT(セル範囲)
COUNT関数に検索条件は付けられないので、COUNT関数とCOUNTIF関数を間違えることはありませんが、使い分け方は覚えておきましょう。
FIND(ファインド)関数
FIND関数は、指定した文字列が何番目にあるかを表す関数です。特にLEFT関数やMID関数とともに使われることが多いです。
LEN(レン)関数で文字列の数を数える
LEN関数を使えば引数に指定した文字列の数を数えられます。引数にセル番地を指定するか、文字列を直接入力すると、文字数を出力できます。文字列を直接引数に指定する場合は、ダブルクオーテーションマークで文字列を囲みましょう。
LEN関数は他の関数と組み合わせて使うことが多いです。例えば、CELL関数、RIGHT関数とLEN関数を組み合わせるとシート名だけを表示できるようになります。
基本的な考え方
特定の文字の出現回数をカウントするには、LEN関数と置換関数(REPLACEまたはSUBSTITUTE)を組み合わせる方法が一般的です。LEN関数は文字列の長さを返す関数で、SUBSTITUTE関数は文字列内の特定の文字を別の文字に置き換えます。これらを利用して、元の文字列の長さと置換後の文字列の長さの差から、特定の文字の出現回数を導き出します。
具体的な手順
- 全体の文字列の長さを計済みます: これは、LEN関数を使って計測します。例えば、セルA1にある文字列の長さを計るには、=LEN(A1)という式を使用します。
- 特定の文字を除去した後の文字列の長さを計測します: これには、SUBSTITUTE関数を使います。例えば、セルA1から”e”を除去するには、=LEN(SUBSTITUTE(A1, “e”, “”))という式を使用します。
- 両者の差から特定の文字の出現回数を求めます: 元の文字列の長さから置換後の文字列の長さを引くことで、特定の文字の出現回数が計算できます。=LEN(A1) – LEN(SUBSTITUTE(A1, “e”, “”))という式が、セルA1内の”e”の数を返します。
実用的な例
- 例: セルA1に”excellent”という文字列がある場合、”e”の出現回数をカウントする式は=LEN(A1) – LEN(SUBSTITUTE(A1, “e”, “”))です。この式の結果は3になります。これは”excellent”には”e”が3回含まれているためです。
応用
この方法は、文字だけでなく、文字列や特定のパターンの出現回数をカウントするのにも応用できます。例えば、セル内に特定の単語やフレーズが何回出現するかを確認するのにも使えます
CELL関数を使う
引数となるシートの名前を取得・表示するためにCELL(セル)関数の例を見てみましょう。CELL関数を使えば、シート名を変更しても、自動で名前の変更が適用されます。CELL関数の数式は下記の通りです。
=CELL(検索の種類,参照)
第1引数の検索の種類は下記のように、さまざまな検索方法から選ぶことになります。今回は「filename」を使ってファイルのパス名を取得します。
検査の種類 | 戻り値(返り値) |
address | 対象範囲の左上隅にあるセル番地を表す文字列 |
col | 対象範囲の左上隅にあるセルの列番号 |
color | セルに負の数を色で表すように書式設定されている場合は「1」、それ以外の場合は「0」が返される |
contents | 対象範囲の左上隅にあるセルの値(数式ではない) |
filename | ファイルの名前保存されていない場合は「””(空白文字列)」 |
format | セルの表示形式※後述のCELLの表示形式コードを参照 |
parentheses | 正の値またはすべての値をかっこで囲む書式がセルに設定されている場合は「1」それ以外の場合は「0」が返される |
prefix | セル内のデータの配置.セルが左詰めの文字列を含むときは単一引用符 (‘)、右詰めの文字列を含むときは二重引用符 (“)、中央揃えの文字列を含むときはキャレット (^)、両揃えの文字列を含むときは円記号 (¥)、また、セルにそれ以外のデータが入力されているときは空白文字列 (“”) になる |
protect | セルがロックされていない場合は「0」、ロックされている場合は「1」が返される |
row | 対象範囲の左上隅にあるセルの行番号 |
type | セルに含まれるデータのタイプ。セルが空白の場合は “b” (Blank の頭文字)、セルに文字列定数が入力されている場合は “l” (Label の頭文字)、その他の値が入力されている場合は “v” (Value の頭文字) になる。 |
width | セルの幅 |
▼CELLの表示形式コード
表示形式 | 戻り値(返り値) | 表示形式 | 戻り値(返り値) |
全般 | “G” | 0 | “F0” |
#,##0 | “,0” | 0.00 | “F2” |
#,##0.00 | “,2” | $#,##0_);($#,##0) | “C0” |
$#,##0_);[赤]($#,##0) | “C0-“ | $#,##0.00_);($#,##0.00) | “C2” |
$#,##0.00_);[赤]($#,##0.00) | “C2-“ | 0% | “P0” |
0.00% | “P2” | 0.00E+00 | “S2” |
# ?/? または # ??/?? | “G” | m/d/yy または m/d/yy h:mm または mm/dd/yy | “D4” |
d-mmm-yy または dd-mmm-yy | “D1” | d-mmm または dd-mmm | “D2” |
mmm-yy | “D3” | mm/dd | “D5” |
h:mm AM/PM | “D7” | h:mm:ss AM/PM | “D6” |
h:mm | “D9” | h:mm:ss | “D8” |
第2引数の「参照」は省略可能です。どのセルから情報を得るかをセル番地で指定します。省略した場合は、CELL関数を入力したセルの情報が得られます。今回はfilenameでファイルのパスを取得するのでセル番地は関係ありません。省略して大丈夫です。
CELL関数を使ったシート名の取得方法
文字列の後ろから文字列を抽出するRIGHT(ライト)関数、指定した文字列をカウントするLEN(レン)関数、指定した文字列が何番目に位置するのかを返すFIND関数を使うと、シート名を取得できます。数式は下記の通りです。
=RIGHT(CELL(“filename”,A1),LEN(CELL(“filename”,A1))-FIND(“]”,CELL(“filename”,A1)))
まとめ
エクセルで特定の文字をカウントしたい場合は、COUNTIF関数を使いましょう。セル範囲と検索条件を指定するだけで完全一致した分カウントされます。複数の条件を設定したい場合はCOUNTIFS関数を、セルに文字列が含まれる数をカウントしたい場合は、COUNT関数を使うといった、使い分けを覚えておきましょう。