Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2007)
色付文字を数えたい
投稿日時: 18/12/22 10:03:26
投稿者: o_taroh

色の付いた文字の数を数えたいのですが、適当な関数又は関数の組み合わせがあるでしょうか?

回答
投稿日時: 18/12/22 10:18:32
投稿者: んなっと

どうやって色を付けましたか?
 
1.条件付き書式
2.セルを選択して、フォント→色 を変更
3.セル内の文字列の「一部だけ」を選択して、フォント→色 を変更

回答
投稿日時: 18/12/22 10:21:46
投稿者: WinArrow
投稿者のウェブサイトに移動

基本的に、色(書式)は、関数では取り扱いすることは、できません。
 
文字色は、どのような条件で設定したのでしょうか?
 
もし、条件があるのでしたら、その条件を使ってカウントできるかもしれません。

投稿日時: 18/12/22 14:14:45
投稿者: o_taroh

セルを選択して色付けしました。

投稿日時: 18/12/22 14:17:28
投稿者: o_taroh

VBA に頼るしかありませんかね!

回答
投稿日時: 18/12/22 14:47:00
投稿者: んなっと

1. B1を選択して
→[数式]
 [名前の定義]
→名前:
color
 参照範囲:
=GET.CELL(24+NOW()*0,!A1)
→OK
→*.xlsm(マクロ有効ブック)で保存
 
2.調べたいセルのすぐ右の列に数式
 
    D    E
 1 名前 色番号
 2  あ    0
 3  い    3
 4  う    3
 5  え    0
 6  お    0
 7  か    3
 8  き    0
 9  く    0
10  け    3
11  こ    0
 
E2
=color
下方向・↓
 
3.COUNTIFで数える
 
    D    E F
 1 名前 色番号 4
 2  あ    0  
 3  い    3  
 4  う    3  
 5  え    0  
 6  お    0  
 7  か    3  
 8  き    0  
 9  く    0  
10  け    3  
11  こ    0  
 
F1
=COUNTIF(E$2:E$200,">0")
 
赤限定なら
=COUNTIF(E$2:E$20,3)

回答
投稿日時: 18/12/22 16:12:12
投稿者: WinArrow
投稿者のウェブサイトに移動

色の識別について
Excel200以前のバージョンでは、56色でしたが
Excel2007以降は、1677万色しよう可能です。
 
Excel4.0マクロ関数は、Excel95以前のツールなので、56色対応
 
手操作で色を設定する場合、1677万色もあると見た目はおなじかもしれませんが、
微妙にちがいます。
 
微妙に違う色をカウントする場合、
VBAでないと判定できません。
 
おなじVBAでも「ユーザー定義関数」という方法がありますが、
セルの書式を設定しただけでは、ユーザー定義関数は動かない場合があります。
コマンドボタンなどを用意して、マクロを起動するなどの方ほうが無難でしょう。
 
ユーザー定義関数レベルで
単純に色を取得するには
Function GETIRO(セル As Range)
    GETIRO = セル.Font.Color
End Function
というコードになります。
 
56色対応のユーザー定義関数
Function GETIRO(セル As Range)
    GETIRO = セル.Font.ColorIndex
End Function
 
 

回答
投稿日時: 18/12/22 17:05:59
投稿者: んなっと

質問文を修正すると

引用:
色の付いたセルの数を数えたいのですが

ということのようですね。
微妙な色の違いは気にしなくていいような気がします。
 
列を追加して"○"などの「チェックをつける」べきところを、
うっかり「文字色で代用」してしまったような状況でしょうか。

回答
投稿日時: 18/12/22 17:07:51
投稿者: WinArrow
投稿者のウェブサイトに移動

文章一部訂正
>おなじVBAでも「ユーザー定義関数」という方法がありますが、
>セルの書式を設定しただけでは、ユーザー定義関数は動かない場合があります。
>コマンドボタンなどを用意して、マクロを起動するなどの方ほうが無難でしょう。
 ↓
おなじVBAでも「ユーザー定義関数」という方法がありますが、
セルの書式を変更しただけでは、ユーザー定義関数は動かない場合があります。
コマンドボタンなどを用意して、マクロを起動するなどの方ほうが無難でしょう。
 

回答
投稿日時: 18/12/22 21:05:35
投稿者: WinArrow
投稿者のウェブサイトに移動

んなっと さんのコメントで

引用:
色のついたセルをの個数を数えたい

質問を読み直してみると
私の回答も少しずれていたように思います。
でも、デフォルトでも色はついているわけだから
セルの個数は、単純に
=COUNTA(セル範囲)
で、よいことになります。
 
 
引用:

色の付いた文字の数を数えたい

について、
本当のところを、再掲して貰えませんか?

投稿日時: 18/12/23 14:02:15
投稿者: o_taroh

ご指導ありがとうございます
少し家をはなれていたもので、チェックが遅れて申し訳ありませんでした。
私の希望は10列の複数行にイベントが起こる度に任意のセルに赤系の色(現在使用しているカラー番号は
-16776961ですが別に拘るわけではありません)が混じるので、それを行単位で赤色が何個あるか表示
したいのです、如何でしょうか。
「ユーザー定義関数」はまだ使ったことがないので、WinArrowさん、んなっと さんのご指導がうまく理解できません、B1にCOLOR=GET.CELL(24+NOW()*0,!A1)と書くということでしょうか、初心者なので説明をもう少し具体的に教えていただくとありがたいですが、いまのところVBAを使いIF文で処理できていますので、あまり煩わしいようでしたらご遠慮もやぶさかではありません。

回答
投稿日時: 18/12/23 14:15:06
投稿者: んなっと

では、VBAで処理してください。
私の方法は使わないように。

回答
投稿日時: 18/12/23 15:11:41
投稿者: WinArrow
投稿者のウェブサイトに移動

話が見えません。
 

o_taroh さんの引用:

私の希望は10列の複数行にイベントが起こる度に任意のセルに赤系の色(現在使用しているカラー番号は
-16776961ですが別に拘るわけではありません)が混じるので、それを行単位で赤色が何個あるか表示
したいのです、如何でしょうか。

>任意のセルに赤系の色が混じる
とはどういうことですか?
手操作で色をセットしているといy説明があったと思いますが、
この文章は、勝手に色が付くみたいに感じられます。
 
で、「赤」のほかに何色があるのですか?
混じるのが問題なんですか?
個数が分かったとして、何をしたいのでしょうか?
 
それからカラー番号:-16776961は確かに赤です。
が、普通は、255と表現します。
RGBでは、RGB(255,0,0)
Colorindexでは、3(Excelン標準パレット)です
 
o_taroh さんの引用:

いまのところVBAを使いIF文で処理できていますので、あまり煩わしいようでしたらご遠慮もやぶさかではありません。

現在のVBAでの対応で問題がないのでしたら、
そのままでよいのではないですか?
 

回答
投稿日時: 18/12/23 16:09:26
投稿者: WinArrow
投稿者のウェブサイトに移動

一言、追加レス
 
んなっと さん、提案のExcel4.0マクロ関数を使っても
私のレス、ユーザー定義関数を使っても
同じ動作になります。
 
セルA1に、文字が入力されているとして、
文字色は、黒
セルB1に、色判定の関数を入力します。
セルB1の値は、「1」(黒)になります。<−−−−ColorIndexの値
次に
セルA1の文字色を「赤」に設定します。
このままではセルB1の値は変化しません。
「F9」ボタン(再計算)を押すと、セルB1の値は、「3」に変わります。
 
関数は、「参照セルの「値」に対して反応する」ことの証です。
(つまり、関数では、セルの書式を使えない)
 
ところで、
o_tarohさんの最初の質問そのものが、かなり、説明不足と思われます。
投稿日時: 18/12/23 14:02:15
の説明で、少しだけ具体的になってきましたが、
まだ、状況説明が不足しています。
何がしたいのかが見えません。
回答者は、あなたのPCの画面を見ることができないので、
文章で、見えるように説明しないと、
質問者の意図が伝わってきません。
 

投稿日時: 18/12/25 08:58:53
投稿者: o_taroh

COUNTIF,SUMIFなどのとうに単純に考えたのですが、なかなか難しい問題が派生するするようで私には理解するのが大変なようです、とりあえずVBAで処理できていますからそのまま使うことにします。
WinArrow さん、んなっと さんいろいろありがとうございました。