• 締切済み

色の付いたセルを数えたい

エクセルでセルの色別で集計したい 挿入→名前→定義で名前をCELLCOLOR 参照範囲を=GET.CELL(63,!A1)+NOW()*0 追加→OK で左となりのセルの色番号を返すユーザー関数を試したけどうまくいかない 上の方法の間違いのアドバイスか それとも別の方法でも よろしくお願いします

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

標準モジュールに Function clr(a, b) Dim cl As Range For Each cl In a If cl.Interior.ColorIndex = b Then n = n + 1 End If Next clr = n End Function 答えを出したいセルに =clr(A1:D14,8) この例では、A1:D14の範囲でカウントの場合で、 色番号インデックス8(ライトブルーの例) 少数例でテスト済み。

totaboy
質問者

お礼

ありがとうございます

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 この件、以前にも出ていたことなのですが、私個人としては、そういう方式自体やVersion4マクロ関数をウンヌンする話はナンセンスだと思いますが、少し、私のほうから、正しい注意書きをつけておきたいと思います。(他の方も読んでいる人もいると思いますから。) まず #1 さんのご指摘が、ちょうどよいのですが、 「!はタイプミスですか?」 これは、 GET.CELL(63,!A1)+NOW()*0 名前-定義というのは、元々、シートに属したものですので、「!」としないと、各シートで使えなくなります。ただし、それは、ある種の致命的エラーにも発展しますので、この方式は、複数のシートで使用する場合は、注意したほうがいいようです。 シートは違っても、同じセル番地で重なったりすると、シートが違ってもエラーが起こる可能性がたまにあります。できるなら、やはり、シートを指定したほうが、安全(Excelのアプリケーションレベルのハングアップを避けること)になります。また、名前-定義というのは、Bookに属したものですから、Bookを越えて、設定することは出来ません。エラーが発生します。 A1 と指定している以上は、右隣、通常は、B1 にセルポインタを置いて、名前登録します。 私は、ここでは書いたことがありませんが、色番号自体を取るのは、ユーザー定義関数で、 標準モジュール Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、Alt + Q で、画面を閉じます。 Function ColorIndexShow(セル As Range, Optional 文字 As Boolean = False)   Dim num As Integer   Application.Volatile   If 文字 = False Then    num = セル.Cells(1, 1).Interior.ColorIndex    Else    num = セル.Cells(1, 1).Font.ColorIndex   End If   If num < 0 Then num = 0   ColorIndexShow = num End Function 使用法: =ColorIndexShow(A1) パターンのカラーインデックス =ColorIndexShow(A1,1) 文字のカラーインデックス'(1は、Trueでも良い) ※関数名の文字の大文字・小文字は関係ありません。 となります。ただし、Now()*0 の再計算をさせた名前定義のほうが、上のようです。根本的な違いは、名前定義で行ったものは、セキュリティのマクロチェックに掛からないということですね。 ユーザー定義関数では、同じことは出来ません。 シート内で使う分には、一般のユーザー定義関数は、Public ステートメントはつける必要はありません。

totaboy
質問者

お礼

ありがとうござます 他のPCを変えたら出来ましたEXCELを再インストールします。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 「うまくいかない」とはどういうことですか? エラーになるのですか? 期待した値を表示しないということですか? とりあえず思いつく点です。 まず、名前定義をする際にB1(A1の右隣りのセル)を選択していますか? 参照範囲の「A1」は、この選択したセルとの相対位置になるので、仮にC1を選択して、名前定義をすると、C1から見て"2つ左隣り"のセルの色番号を表示することになりますよ。 次に、セルの色を変更した後に、[F9]で再計算しないと反映されませんが、それは大丈夫ですか? ちなみに、No.1の方が指摘している「!」は、シートを特定しないためにセル番地の前に付けるための記号ですので、問題ないと思います。 後、No.2の方も紹介していますが、私も別のページを紹介します。 http://www.moreexcellent.com/excel/tips/color.htm

参考URL:
http://www.moreexcellent.com/excel/tips/color.htm
totaboy
質問者

お礼

ありがとうござます ご指摘の内容は全て問題ありません エラーは#NAME?です 他のPCを変えたら出来ましたEXCELを再インストールします。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

エクセル技道場というサイトで紹介されてますので確認してください。 http://www2.odn.ne.jp/excel/ 「名前定義」の「名前定義で4.0マクロ関数を使う」にあります。

totaboy
質問者

お礼

ありがとうござます 他のPCを変えたら出来ましたEXCELを再インストールします。

  • surounin
  • ベストアンサー率28% (30/106)
回答No.1

!はタイプミスですか?

totaboy
質問者

お礼

ありがとうござます 他のPCを変えたら出来ましたEXCELを再インストールします。