「Excelで文字色ごとにセルをカウントしたい!」
たとえばテストの点数表で、赤文字で書かれた「赤点の人」だけ、黒文字で書かれた「合格の人」だけを数えてくれる機能があったら便利ですよね。
実は、エクセルでは「数値」をもとに計算処理をする仕様になっており、色などの書式を条件とする関数は用意されていません。そのため文字色ごとにセルをカウントするには少々手を加える必要があります。
そこで今回は、フォントの色別にセルを数える方法を3種類ご紹介。
エクセルではVBA(Visual Basic for Applications)を利用したマクロを機能させることで、より多くの作業ができるようになります。難しく感じるかもしれませんが、今回の記事でコードをコピー&ペーストで実装できるようにしていますので、ぜひ試してみてください。
「VBAと聞くだけでハードルが高い…」という人は、残りの2パターンもご覧になり、自分に合ったものから試してみてくださいね。
「フォントが赤色のセルをカウントしたい」という場合には、Excel標準関数ではカウントすることができません。VBAを使えば、以下の手順でカウントすることができます。
(1)エクセルを開いた状態で、「Alt + F11」キーを同時に押し、VBAウィンドウを表示します。
(2)「VBAProject(エクセルファイル名)」を右クリック>「挿入」>「標準モジュール」を選択します。
(3)下記のVBAのコードを入力します。
Public Function CountColor(ByVal area As Range, ByVal colorCell As Range) As Long
Dim targetRange As Range
Dim wkCount As Long
wkCount = 0
For Each targetRange In area
If targetRange.Font.Color = colorCell.Font.Color Then
wkCount = wkCount + 1
End If
Next
CountColor = wkCount
End Function
(1)「=CountColor(検索範囲,検索文字色セル)」を入力します。
「検索文字色セル」には、検索したい対象の文字色と同じ文字色のセルを指定します。
今回の画像の例であれば、黒字の場合は「A6」セル、赤字の場合は「B6」セル、青字の場合は「C6」セルですね。
セルの文字色情報を読み取り、その情報を元に検索範囲内の同一文字色のセルをカウントします。
検索範囲の文字色を変更した場合、自動的にカウント結果に反映されません。
その場合は、計算セルをダブルクリックし、Enterを入力します。そうすることで再度処理が実行され、カウント結果が更新されます。
また、ファイルを保存する場合は、作成したコードごと保存できる「.xlsm」形式で保存してください。通常の「.xlsx」形式では、VBAコードが保存されないため、「CountColor」関数が使えなくなります。
上部のリボンに「開発」タブを追加することでより、スムーズにVBAを使用することができます。
(1)上部にあるリボンから「ファイル」を選択します。
(2)「オプション」を選択します。
(3)「リボンのユーザー設定」を選択し、右側の「開発」にチェックを入れます。
(4)「開発」タブが表示されることを確認します。
VBAとかマクロはできれば使いたくない、という方は「関数+フィルター」の合わせ技でカウントする方法がおすすめ。ただし、こちらは一列にフィルター機能をかけていくため、データが一列に並んでいる場合に適しています。
(上記のようにデータが縦3列に並んでいるような場合は、各列を計算してからすべてを合計するなどの対策が必要です。)
ここに、簡単な一覧表を用意しました。点数の下の方に「集計欄」を作っておきます。
(1)集計欄に「=SUBTOTAL(3,A2:A15)」(※実際はすべて半角)と入力しEnter
・数式の「3」は「データの個数を求める」という指示を表します。
・「A2:A15」のところは、データの範囲を指定してください。実際のデータを上から下まで選択することでも自動入力できます。
現時点では、集計欄は全員の人数である14がカウントされます。ここからフィルターをかけていきます。
(2)タイトル部分(ここでは点数)を選択してから「データ」→「フィルター」
(3)タイトル部分に現れたボタンをクリック→「色別フィルター」
(4)下図のように、フォントの色を「赤」と「自動」で選べます。
(5)赤を選択すると、赤点データだけがチョイスされて集計欄は「5」になりました!
(6)集計欄は都度変化するため、別の表にコピペでまとめていきます。「ペースト」→「値の貼り付け」にすれば、シンプルに数字の「5」として持ってくることができます。
続いてフォントの色「自動(黒)」も同じ手順で、表を完成させます。
3つ目の方法は「4.0マクロ+関数」でカウントする方法です。マクロを使うといっても先ほどのVBAコードのように長くないので、応用しやすいかもしれません。ただし、この方法は色をいったん数値に置き換えるための列が隣に必要です。
注)Excel4.0マクロは2022年9月時点ではMicrosoftでサポートされていますが、VBAの最新バージョンへの移行が推奨されていますので、念の為ご承知おきください。
先ほどと同じ点数表を使ってやってみましょう。
(1)隣のセル(ここではB2)を選択しておいて、「数式」→「名前の定義」と進みます。
※見え方はExcelのバージョンにより多少異なります。
(2)「名前」の部分に『color』と入力し、「参照」の部分には『=GET.CELL(24,A2)+NOW()*0』と入力し「OK」。
・上記マクロ上の「24」は「フォントの色を数値化する」という指示を表します。
・そして「A2」は、B2セルの隣を指しています。
(3)B2セルに戻り『=color』と入力しEnter
(4)すると赤色を表す「3」が表示されます。そのまま下にコピーすると、黒は「1」と表示されていることが分かります。
(5)数値化できたので、これを集計していきます。COUNTIF関数を使って『=COUNTIF(B2:B15,3)』と入力。「3と書かれたセルの数を数えてください」という関数です。
関数は、上図右側のようなナビゲーションでサポートしてもらうのも分かりやすいです。
同様に、黒文字を数えるときは『=COUNTIF(B2:B15,1)』となりますね。これで完成です!B列は必要なとき以外は隠しておいても良いかもしれません。
今回は、文字色ごとにセルをカウントするための方法を3つご紹介しました。
あなたのExcelデータに一番合いそうなものから試してみてくださいね。VBAは一見難しそうに見えますが、コピー&ペーストで実装できるのでおすすめ。一度やってしまえば、とても楽に集計ができるようになるはずですよ。
文:マイナビ学生の窓口編集部
2024/08/07
600年の時を超えて伝わる “人生と仕事に役立つ” 室町時代の能楽師「世阿弥」の知恵とは?#Z世代pickフレッシャーズ
2024/07/25
2024/07/18
2024/07/11
2024/06/17
いつでもわたしは前を向く。「女の子の日」を前向きに♪社会人エリ・大学生リカの物語
ウワサの真実がここにある!? クレジットカードの都市伝説
忙しい新社会人にぴったり! 「朝リフレア」をはじめよう。しっかりニオイケアして24時間快適。
社会人デビューもこれで完璧! 印象アップのセルフプロデュース術
あなたの“なりたい”社会人像は? お仕事バッグ選びから始める新生活
視点を変えれば、世の中は変わる。「Rethink PROJECT」がつたえたいこと。
実はがんばりすぎ?新社会人『お疲れ度』診断
かわいい×機能性がつまったSamantha Thavasa Petit Choiceのフレッシャーズ小物を紹介! 働く女性のリアルボイスを集めて開発された裏側をレポート
【診断】セルフプロデュース力を鍛える! “ジブン観”診断