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

エクセル初心者です。
エクセルセルに
佐藤
鈴木
青山
渡辺
と入力されてあって佐藤と鈴木の文字の色が青だった場合文字色(青)がついているセルをカウントし,あるセルに2と表示することはできるのでしょうか。条件付書式や検索と思いましたがわかりません。よろしくお願いします。

A 回答 (3件)

 質問者様お使いのエクセルのバージョンが不明なので何がアレですが


いちおう 2000 で作成した経験からアドバイスさせていただきます。


>文字色(青)がついているセルをカウントし,

1 残念ながらマクロを使わないと,ご希望のことは難しいようです。
  以下に手順を記しますので参考にしてください。

(1) [ツール]-[マクロ]-[VisualBasicEditor](またはAlt + F11)で
 VBE画面にします。

(2) VBE画面上で[挿入]-[標準モジュール]を選択します。
 するとコードウィンドウが出ますので、以下のコードを記します。
 (コピー&ペーストでもOK)

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

(3) 元のワークシートに戻って、カウント結果を表示させたいセルに、

赤字のカウントは =SpecialCell(A1:E5,3)
青字のカウントは =SpecialCell(A1:E5,5)
黄字のカウントは =SpecialCell(A1:E5,6)

 などとすればOKです。

 ただし、フォント色が黄でセル色が青などというのは、どちらにも
カウントされてしまうので注意が必要です。


 ☆参考:ブックの標準カラーパレットのインデックス番号
  (VBエディタのヘルプにて「ColorIndex」を検索、参照した)

  1 黒   2 白   3 赤   4 黄(薄)緑 5 青
  6 黄   7 桃色  8 水色  9 茶色   10 緑
  11 紺    (濃い緑)

以下 ~ 56 まであるようです。



2 別解(参考)
-----------------------------------------------------------
Function ColoredCell(rngArg As Range, rngSample As Range) As Long
For Each c In rngArg
If c.Interior.ColorIndex = rngSample.Interior.ColorIndex Then
ColoredCell = ColoredCell + 1
End If
Next
End Function
----------------------------------------------------------------
 使う際には =ColoredCell(A1:A10,A5) といったように、第1引数は
調べたい範囲、第2引数には指定する色の(サンプル)セルを当てる。
 ※SUMIF 関数の併用も可



2 実は、マクロを使わない方法があります。
  5~6年程前に、何処かで教わった記憶があります。

  色を判定する式(=GET.CELL(**,**))をブックに登録、判定結果を
 表示したいセルに、登録した式の定義名で記述する。
  その判定結果を SUMIF や COUNTIF 関数の引数として再利用する。

 以下は、その手順です。

 (1) 色を判定する式を登録
   メニューバー「挿入」→「名前」→「定義」名前の定義画面にて
  「参照範囲」欄に
   「=GET.CELL(検査の種類を指定する番号,判定したいセル番地)」
   名前欄に式の名前を(「文字の色」や「セルの色」等)付けて
  「追加」→「OK」で登録完了
☆検査の種類を指定する番号とは?
20→フォントは太字か否か?を判定
24→文字フォントの色を判定
63→セルの塗りつぶし色を判定
 
 なお、後から書式を変更しても結果が自動的には更新されないので、
NOW 関数を組み込み「F9」キーで更新させた方が良いようです。
 例「=GET.CELL(**,**)+NOW()*0」(0を足している為、値に影響なし)

 (2) 判定した結果を表示させる
   判定結果を表示したいセルに「=定義した名前」という式を入力
  すると色の種類すなわち色の番号を判定結果として表示してくれる
   色の番号(Excel のヘルプでカラーインデックスを参照できる)
   例☆黒字(無指定)=>0
     赤      =>3
     青      =>5
     緑      =>10
     薄緑     =>4
     ※その他も、実際に試してみれば結果は分かるはず

 (3) 判定した結果を、SUMIF や COUNTIF関数の引数として利用する。

 言葉で説明するのは非常に難しくこれで理解していただけるかどうか
自信がありませんが、この、色の判定式を登録してしまうという方法は
Excel97 から Excel2002までのバージョンで活用できることは確認済み
です。 もちろんこれも SUMIF 関数との併用(数字として計算する)が
可能です。
 実際のサンプルファイルを見ていただければいいのですが、なかなか
良い方法が思いつきません。

 Excel2007 で読み込んでも反映されましたが、2007でどう作成するの
かは、残念ながら 2007 での作成経験がないので説明できません。



 ところで、この OkWave には Office 系ソフト専門のカテゴリもあり
ます。 そっちの方が詳しい人が多いと思うので、今後は使用ソフトの
バージョンも併記してそちらで質問されるようにした方が解決が速いと
思われます。

http://okwave.jp/207/218/c232.html

 なお、老婆心ながら、その場合の複数カテゴリにわたる(多重投稿)
マルチポストには気をつけましょう。

参考URL:http://miyahorinn.fc2web.com/faq/faq030.html,htt …
    • good
    • 7
この回答へのお礼

丁寧なご回答ありがとうございます。
参考にさせていただきます。
返信が遅れて申し訳ありませんでした。

お礼日時:2009/08/11 05:47

普通の数式ではできません。


Alt+F11でマクロを追加してください。
こんな感じで↓

Function COUNTCOLOR(data As Range, color As Integer)
Application.Volatile
Count = 0
For Each c In data
If c.Font.ColorIndex = color Then
Count = Count + 1
End If
Next c
COUNTCOLOR = Count
End Function

それで使うときは
=COUNTCOLOR(A:A,1)
という感じで使ってください。上記の例では1番目の引数で範囲を、2番目の引数で色インデックスを指定します。
    • good
    • 10
この回答へのお礼

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

お礼日時:2009/08/11 05:51

書式を参照する関数はありませんので、VBA(マクロ)を使うことになります



セルA1の文字色は
Range("A1").Font.ColorIndex
で取得できます。
ColorIndexは色番号で、青は5、赤は3などです。(URI参照)

青を数えるユーザー定義関数 CountBlue(範囲) は
Function CountBlue(範囲 As Range)
 cnt = 0
 For Each r In 範囲
  If r.Font.ColorIndex = 5 Then
   cnt = cnt + 1
  End If
 Next
 CounrBlue = cnt
End Function
という風になります。
これをVBEで作成して、セルに
=CountBlue(A1:A5)
などというように書けば、文字が青のものを数えてくれます

参考URL:http://www.relief.jp/itnote/archives/000482.php
    • good
    • 4
この回答へのお礼

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

お礼日時:2009/08/11 05:53

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A