- ベストアンサー
エクセルで文字色を数える関数について
- エクセルのセル内の文字色を数えるための関数について説明します。
- 関数を使用して特定の色の文字が含まれるセルを数える方法を紹介します。
- 複数の色が含まれるセルの文字色を数える方法についてご説明します。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
kmetu さんの「セル範囲を()で囲む」を私のソースに適用させてもらって(^^; ん? (1) は【丸囲み数字1】ですか?では Function SpecialCell(TargetRange As Range, intColor As Integer) As Integer '赤は3,緑は4,青は5,黄は6 Dim myCell As Range Dim intIDX As Integer Dim strVALUE As String For Each myCell In TargetRange If myCell.Font.ColorIndex = intColor Then SpecialCell = SpecialCell + 1 GoTo SkipFor End If If myCell.Interior.ColorIndex = intColor Then SpecialCell = SpecialCell + 1 GoTo SkipFor End If If myCell.Value <> "" Then For intIDX = 1 To Len(myCell.Value) If myCell.Characters(intIDX, 1).Font.ColorIndex = intColor Then SpecialCell = SpecialCell + 1 End If Next End If SkipFor: Next End Function これで、=SpecialCell((D10,D8,D29,D49,D51,D57),3) のように書けばOKかと。
その他の回答 (11)
- kybo
- ベストアンサー率53% (349/647)
コードは以下のようにして、 Function SpecialCell(intColor As Integer, ParamArray targetRange() As Variant) As Integer '赤は3,緑は4,青は5,黄は6 Dim myCell As Range, I As Integer For I = 0 To UBound(targetRange) For Each myCell In targetRange(I) If myCell.Font.ColorIndex = intColor _ Or myCell.Interior.ColorIndex = intColor Then SpecialCell = SpecialCell + 1 End If Next Next End Function セルには、 =SpecialCell(3,D10,D8,D29,D49,D51,D57) のように入力してみください。
お礼
回答ありがとうございます。 問い1の方はとりあえず簡単そうなNO2さんの方法でうまくいきました。 ありがとうございました。 問い2の方で未だ苦戦中です。 よろしければまたご教授くださいませ。。。
- 1
- 2
お礼
たびたびありがとうございます。 このコードを試したところ、無事D欄・E欄ともに計算してくれました。 そして恐縮ながらもう一つ教えていただけると助かります。。。 Dの縦欄は、セル内背景色を分けているのと、文字色は1色です。 (なので、背景色ごとのセル分けで集計するための問1でした) このセル内の背景色を4色で分けているのですが、中の文字色は関係なく、背景色の数字を数えるのはできますでしょうか? %を出す為に、現在背景色を手計算で問1で教えていただいた数字で割っております。。。 この背景色も計算できると非常に助かります。。。 (現在のD欄とE欄の計算式が壊れないよう) http://miyahorinn.fc2web.com/tips/s_02_02_04_02.html とりあえず、これを元に作成してみますけど、問題があればご教授下さいませ。 よろしくお願いたします。。。 そしてありがとうございました。。。 助かりました。。。
補足
ごめんなさい。下記のURLでいけました。 今までの経緯を思うと、壊れるの前提で書いてしまいましたw ありがとうございました。。。