遅刻の「言い訳」選手権

お世話になっております。

色付きのセルをカウントしたいのですが、Excelの関数では実現が難しいということは分かりました。調べていくと、VBAというプログラムを使えば、実現が可能だと分かったのですが、いろいろとサイトを調べたのですが、私の力不足で、こちらでお力をお貸し頂ければと存じます。

添付資料をご覧ください。左側の表には、文字に色のついたセルがあります。そのセルをカウントしたいのですが、それに加えて、その文字列には、特定の文字が含まれており(①から③)、どの色が付いているか、かつ、どの特定の文字列を含んでいるか、の条件の元、カウントしたいと思っております。そのカウントしたイメージが、右側の表になっております。

お忙しいところ、恐縮ではございますが、どうかお知恵をお貸しいただけないでしょうか。
ご教授頂けると幸いです。

何卒、よろしくお願い申し上げます。

※ なお、このご質問に関連した別の質問を、後ほど、投稿させて頂く予定ですので、もしお時間が許すようでしたら、そちらの方も、ご覧頂き、お知恵をお貸し頂ければ幸いです。重ねて、お願い申し上げます。

「色付きのセルをカウントする方法について。」の質問画像

質問者からの補足コメント

  • お世話になっております。

    表の一部を修正し、プログラムの詳しい意味は分かっておりませんが、エラーを修正しながら、何とか行いたいことが、実現出来ているような感じが致します。ありがとうございました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/02/05 09:47
  • 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

    If InStr(targetRange, colorCell.Value) <> 0 Then

    wkCount = wkCount + 1

    End If

    End If

    Next

    CountColor = wkCount

    End Function

      補足日時:2021/02/05 09:48

A 回答 (3件)

そのif文の意味は、B4~D4に「青」が存在した時に、


B4~D4 が*①のセル数をカウントしなさい、
です。
やりたい事は、「青」且つ「*①」なので、
if文をそのように書けば良いのです。

答えを回答してしまうのは簡単なのですが、
スレ主さんの知識が高まるのを期待して、
考えるヒントのみ回答しています。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

理解不足で申し訳ないのですが、if関数のはじめの引数は、論理式で、その式が真か偽で分岐していくと思います。その場合、CountColor関数にしても、Countif関数にしても、返してくるものは、数字です。それをどのように「且つ」とすれば良いのでしょうか?

申し訳ないのですが、追加でヒントをいただけないでしょうか。

何卒、よろしくお願い致します。

お礼日時:2021/02/04 19:10

色をカウントする if 文の中に、特定の文字 を


判別する if 文を組み込む。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

VBAのプログラムは、ほぼ意味が分かっていないため、関数ベースで考えてみたのですが、上手く動きませんでした。

=IF(CountColor($B4:$D4,F$1)<>0,COUNTIF($B4:$D4,"*①"),"")

これだと、4行目の「文字が青、①を含む」が、2 カウントされてしまいます。

お手数をお掛け致しますが、ご教授頂けると幸いです。

何卒、よろしくお願い致します。

お礼日時:2021/02/04 18:09

質問内容が不明確ですが、


「excel 色のついた文字を数える」
で検索すると多くの解決策がヒットします。

それらを見ても分からないなら、「具体的に」
何が分からないのかを質問してください。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございます。

インターネット上のあるサイトから、以下のプログラムを参照させて頂きました。

------------------
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
------------------

このプログラムのお陰で、何とか色はカウントすることが出来たのですが、このプログラムに特定の文字列を含む(①、②、③)という条件を加えることが出来ませんでした。

特定の文字列を含むセルをカウントする場合は、countifを使えば良いと思うのですが、この2つの組み合わせが上手く行きませんでした。

ご教授いただけると幸いです。

何卒、よろしくお願い致します。

お礼日時:2021/02/04 16:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報