アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのセル内の文字色に関してのマクロを下記の通り書きました。


Function SpecialCell(targetRange As Range, _
intColor As Integer) As Integer
'赤は3,緑は4,青は5,黄は6
Dim myCell As Range

For Each myCell In targetRange
If myCell.Font.ColorIndex = intColor _
Or myCell.Interior.ColorIndex = intColor Then
SpecialCell = SpecialCell + 1
End If
Next
End Function

その後答えを求めるセルに
=SpecialCell(D5:D125,3)

これはちゃんと表示できます。

しかし、
=SpecialCell(D10,D8,D29,D49,D51,D57,3)

このようにセルの個別ごとに求めようとすると
#VALUE!

が出ますので引数が間違っているのだとは思うのですが、
この場合はどうすればよろしいでしょうか?

また、セル内に複数の色つき文字がある場合、
例えば同一セル内に
(1)(2)(3)
とあって、
(1)が赤
(2)が青
(3)がピンク

とした場合、
=SpecialCell(D5:D125,3)
これでは0と出てきてしまいます。。。
この場合はどういう風に数式をいれればよいのでしょうか?


以上2点ほどご教授いただけると助かります。
よろしくお願いいたします。。。

A 回答 (12件中11~12件)

=SpecialCell((D10,D8,D29,D49,D51,D57),3)



セルの指示を括弧で囲むといけますね。
    • good
    • 0
この回答へのお礼

ありがとうございます!
括弧で囲むとすんなりいきました!

助かりました!

お礼日時:2011/11/30 17:07

コードは以下のようにして、



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)

のように入力してみください。
    • good
    • 0
この回答へのお礼

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

問い1の方はとりあえず簡単そうなNO2さんの方法でうまくいきました。

ありがとうございました。

問い2の方で未だ苦戦中です。
よろしければまたご教授くださいませ。。。

お礼日時:2011/11/30 18:07

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