いつもお世話になります。
WIN7 EXCELL2010 です。
下記のマクロと数式にて F4:F7 にカラー番号を示しています。
マクロ
Function CellColor(セル)
CellColor = セル.Interior.ColorIndex
End Function
数式
F4 =CellColor(E4)
御指導を仰ぎたいのは、
F4 : F7 の4つのみのカラー番号(この場合 24/14/40/48)で
B2 には 5件
C2 には 2件 と関数でカウントすることは可能でしょうか。
もし可能ならばご教授をいただけないでしょうか。
よろしくお願いします。
No.6ベストアンサー
- 回答日時:
No.3・4です。
>追加してゆく分には大成功ですが何かの拍子にミスして、
>塗りつぶしを塗りつぶしなしにするとカウントが減りません。
の件ですが「ユーザー定義関数」のヘルプとして
>色などの書式を使って計算するときには、大きな注意点が一つあります。それは、書式を変更しても自動再計算されないということです。セルの値を変更すれば自動的に再計算されますが、セルの色を変えても再計算はされないのです
という一文があります。
今回の場合、
なぜ色を付ける場合に反応して、「色なし」にした場合に反応しない!と理由は判りませんが・・・
対処方法として
(1)強制的に F9キーを押下して再計算する
(2)操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Calculate
End Sub
といった感じのコードを入れておいて、別のセルを選択して再計算を実行するか!
といった方法しか思いつきません。
※ Changeイベント では書式の変化は「Change」と認識してくれませんので反応しないと思います。
他に良い方法があればごめんなさいね。m(_ _)m
No.7
- 回答日時:
> 追加してゆく分には大成功ですが何かの拍子にミスして、
> 塗りつぶしを塗りつぶしなしにするとカウントが減りません。
その場合、Ctrl+Alt+F9を押してください。
あと、書き忘れましたが、前回の補足で「E4 を コピーして B4 に張り付けている」と書かれていたので、私の場合、E4 : E7 の4つのみのカラー以外で塗りつぶされるセルは無い、もしくはE列のセルのコピーしかしていないために、カウントするセルにはE列で指定された色しか存在しないという考えで、塗りつぶされたセルを単純に数えるという手抜きなコードにしています。それ以外の色で塗りつぶされる可能性があるのでしたら正常にカウントしませんのでよろしくお願いします。
No.5
- 回答日時:
> E4 を コピーして B4 に張り付けているだけなので特にこれと言った条件はないのです
適当にという事でしょうか。とりあえず、条件がないとすれば自作関数ですね。以下のようなやり方でいかがですか。ただし、条件式書式で色が設定されたセルはカウントされません。条件がないという事なのでそれは無視できると思います。
Function CountColor(MyRange As Range)
Dim c As Range
Dim i As Integer
For Each c In MyRange
If c.Interior.ColorIndex <> xlNone Then
i = i + 1
End If
CountColor = i
Next
End Function
式
B2= CountColor(B3:B10)
B10は調べたい範囲まで指定してください。
この回答への補足
早速の御指導を感謝しています。
試させていただきました。
追加してゆく分には大成功ですが何かの拍子にミスして、
塗りつぶしを塗りつぶしなしにするとカウントが減りません。
これは何とかならないもんでしょうか。
可能ならば再度ご指導いただけませんか。
是非ご協力ください。
宜しくお願いいたします。
No.4
- 回答日時:
No.3です。
たびたびごめんなさい。
前回のコードで不要な行がありました。
>Set r = 検索
>Set c = 範囲
の2行は不要ですので、削除してください。m(_ _)m
この回答への補足
tom04さん
こんにちは
いつもありがとうございます。
早速の御指導を感謝しています。
試させていただきました。
追加してゆく分には大成功ですが何かの拍子にミスして、
塗りつぶしを塗りつぶしなしにするとカウントが減りません。
これは何とかならないもんでしょうか。
可能ならば再度ご指導いただけませんか。
是非ご協力ください。
宜しくお願いいたします。
No.3
- 回答日時:
こんにちは!
ユーザー定義関数を使いたい!というコトですので、
標準モジュールに
Function 色数(範囲 As Range, 検索 As Range)
Dim c As Range, r As Range, cnt As Long
Set r = 検索
Set c = 範囲
For Each c In 範囲
For Each r In 検索
If c.Interior.ColorIndex = r Then
cnt = cnt + 1
End If
Next r
Next c
色数 = cnt
End Function
として、結果を表示したいセルを選択 →「fx」をクリック → ユーザー定義関数から 「色数」を選択
後は 「関数の挿入引数」の
「範囲」の窓に色をカウントしたい範囲を選択 → 「検索」の窓に 画像では F4:F7 セルを絶対参照として → OK
とりあえず画像の範囲では数式バーには
=色数(B4:B9,$F4:$F7)
と表示されるはずですので、これをフィルハンドルで右へコピーしてみてください。
※ 今回は「カラーインデックス」で判定していますが、お示しの配置でセル色で判断したい場合は
>If c.Interior.ColorIndex = r Then
の行を
>If c.Interior.Color = r.Interior.Color Then
として、「検索」範囲はセルの色がついている $E4:$E7 とします。m(_ _)m
No.1
- 回答日時:
>B2 には 5件
B列でF4:F7に示された色の着いたセルの数なら
Function ColorCount(セル)
Dim myRng As Range, i As Long, j As Long, n As Long
Set myRng = ActiveSheet.UsedRange.Columns(セル.Column)
For i = 1 To myRng.Cells.Count
n = myRng.Cells(i).Interior.ColorIndex
If Not IsError(Application.Match(n, Range("F4:F7"), 0)) Then
j = j + 1
End If
Next
Set myRng = Nothing
ColorCount = j
End Function
数式
B2 = ColorCount(B1)
この回答への補足
早速の御指導ありがとうございます。
御指導のマクロを
1 シートの表示 コードの表示
2 THIS SHEET
いずれにも
B2 = ColorCount(B1)
試しましたが B2 には「#NAME?」と表示されます。
再度ご指導いただけませんか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
対象セル内(複数)が埋まった...
-
【エクセル】IF関数 Aまたは...
-
Excel 例A(1+9) のように番地の...
-
枠に収まらない文字を非表示に...
-
Excelで数式内の文字色を一部だ...
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
【Excel】 セルの色での判断は...
-
エクセルの一つのセルに複数の...
-
セルの高さ(行高)を求めるには?
-
Excelでのコメント表示位置
-
エクセルの書式設定の表示形式...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセル 足して割る
-
EXCEL VBA セルに既に入...
-
(Excel)数字記入セルの数値の後...
-
【Excel】特定の文字から文字ま...
-
Excel2003 の『コメント』の編...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
対象セル内(複数)が埋まった...
-
エクセルのセルの枠を超えて文...
-
【Excel】 セルの色での判断は...
-
EXCEL VBA セルに既に入...
-
(Excel)数字記入セルの数値の後...
-
エクセル オートフィルタで絞...
-
Excel2003 の『コメント』の編...
-
エクセルの一つのセルに複数の...
-
枠に収まらない文字を非表示に...
-
セルに特定の色が付いていたら...
-
excelの特定のセルの隣のセル指...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセル “13ヶ月”を“1年1ヶ月...
おすすめ情報