
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ColorCellCount と作っている方がいるようですし、
http://oshiete.goo.ne.jp/qa/2000523.html
できるできないかというよりも、VBAを使うか使わないかの違いでしかありませんね。
私は、VBAが中心としている回答者ですから、私には、Excelの機能の一部のVBAは利用しないままに使いましょうという話に読めました。
google検索で「Excel 色付きセルをカウント」と入れると、いろんなものが出てきます。
https://matome.naver.jp/odai/2146839682141749501
こんなまとめサイトもありますが、それらを否定してしまうのか、はたまた、VBA自体を使うこと自体が問題のかは、私には分かりません。色の付いたセルの処理は、長い間繰り返されてきた話です。
Microsoft 社内部でも、VBAについては、同じ議論が繰り返されているようです。使わないで同じことができればとは思いますが、そのために複雑化させるのは得策ではないですし、他の言語で処理しましょうといのは、本末転倒になってしまいます。(実際は、後者の他の言語で処理しましょうという方向にあるようです)
標準モジュールに、くだんのコード、
Function ColorCellCount
何か不具合が生じるのか、今のExcelにはなじまないようなので、作り変えてみました。
=COUNTA(E3:E19)-ColorCellCount(E3:E19, 2)
ColorCellCount(範囲, 見本のセル, Fontの色なら=なしか、False、塗りつぶし=True)
= ColorCellCount(E3:E19, 2, True)
意味は、E3~E19の範囲の、E4の塗りつぶしの色と同じものを探して数えろ、という意味です。
= ColorCellCount(E3:E19, 2)
意味は、E3~E19の範囲の、E4のフォントの色と同じものを探して数えろ、という意味です。
'//
Function ColorCellCount(範囲 As Range, Optional セルの順番 As Integer, Optional パターン As Boolean = False)
''範囲, セルの色の見本-上から順 ,パターンか文字か(False=文字の色)
Dim myRng As Range
Dim blnPattern As Boolean
Dim myIndex As Long
Dim fntCnt As Long
Dim innCnt As Long
Dim c As Range
Dim dblSum As Double
Dim idxInColor As Long
Dim idxFnColor As Long
Set myRng = 範囲
myIndex = セルの順番
blnPattern = パターン 'False =文字, True=塗りつぶし
idxInColor = myRng(myIndex).Interior.Color
idxFnColor = myRng(myIndex).Font.Color
For Each c In myRng
If Not IsError(c) Then
If blnPattern Then
'パターンの色
If c.Interior.Color = idxInColor Then ' c.Interior.ColorIndex > 0 Or
innCnt = innCnt + 1
dblSum = dblSum + c.Value
End If
Else
'文字の色
If c.Font.Color = idxFnColor Then ' Or Then 'c.Font.ColorIndex > 0 Or
fntCnt = fntCnt + 1
dblSum = dblSum + c.Value
End If
End If
End If
Next
If blnPattern Then
ColorCellCount = innCnt
Else
ColorCellCount = fntCnt
End If
End Function
No.2
- 回答日時:
何をどうした結果 その数式に行きついたのでしょうか。
Excelに「ColorCellCount」という関数はありません。おそらくユーザー
定義関数だろうと思います。
VBAの知識があるなら「ColorCellCount」関数を自分で作れば
使えるようになりますが そもそも「色を数える」という発想そ
のものから見直した方がいいように思います。
E2:E19の範囲を選択した状態で フィルタを設定し「色フィルタ」
で 色のついていないセルだけ抽出してやれば SUBTOTAL関数か
オートカルク機能でデータ個数を集計できると思います。
No.1
- 回答日時:
>ColorCellCount
はユーザー定義関数で、Excelに元から入っている関数ではありません。
基本的に一般機能では色などの書式でカウントすることはできないと思ってください。
(できないことはないけど、お勧めではない)
オートフィルタを設定して、どこかにSUBTOTAL関数を入れ色なしでフィルタリングするとか、色が何かの規則性にしたがってつけているのならその条件を使ってカウントするとかで如何でしょうか?
この回答へのお礼
お礼日時:2017/02/03 13:48
そうだったんですね!!!
アドバイス、ありがとうございます!!
すぐにでも使用したかったので、とても助かりました。
規則性のないものだったので、他の方法を考えてみます!
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
エクセル オートフィルタで絞...
-
セルをクリック⇒そのセルに入力...
-
Excel for Mac使用中ポインタが...
-
エクセルの書式設定の表示形式...
-
対象セル内(複数)が埋まった...
-
EXCEL VBA セルに既に入...
-
エクセルのセルの枠を超えて文...
-
Excel 例A(1+9) のように番地の...
-
Excelで住所を2つ(町名迄と番...
-
Excelで数式内の文字色を一部だ...
-
(Excel)数字記入セルの数値の後...
-
数式を残したまま、別のセルに...
-
【エクセル】IF関数 Aまたは...
-
EXCELのセルの中の半角カンマの...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
枠に収まらない文字を非表示に...
-
文字列として"(ダブルコーテー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba テキストボックスとリフト...
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセル
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
エクセル オートフィルタで絞...
-
エクセルの書式設定の表示形式...
-
Excel 例A(1+9) のように番地の...
-
エクセルの一つのセルに複数の...
-
excelの特定のセルの隣のセル指...
-
EXCEL VBA セルに既に入...
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
おすすめ情報