みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル

Excel2010で、色つきセルの中で指定した文字列を数える数式はありますか?
入力された文字列は15種類、それが色つきセルになっているものと、色がついていないセルに分かれています。文字列別のカウント(色つきセルも色無しセルも区別のない、文字列のみの条件でのカウント)はCOUNTIFで既に出ていますが、色つきになっているセル限定で文字列別にカウントするのはどうしたらいいでしょうか?

投稿日時 - 2016-11-16 11:00:25

QNo.9256327

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

とても面倒なのですが・・・

シート1に色付きの文字列があるとします。わかりやすく A1:F8とさせていただきます。
シート2にシート1の文字がかかれている範囲と同じ範囲(A1:F8)を指定します。
そして「数式」→「名前の定義」
で 「名前」を color 「参照範囲(R)」を =GET.CELL(63,Sheet1!A1)+NOW( )*0 とし「OK」ボタンを押します。
その後、シート2の A1 に、=color という数式を入力 A1:F8 にコピペします。
色の番号が表示されると思います。
それから
シート3の A1 に =Sheet1!A1&Sheet2!A1 の数式を入力 A1:F8 にコピペします。
あとは背景色番号がプラスされた文字列を COUNTIFで数えたらいいと思います。

投稿日時 - 2016-11-16 19:26:07

ANo.4

こんにちは
Module1でも大丈夫だと思いますけど、Module2を挿入してそちらにコピペ
してもいいです。

投稿日時 - 2016-11-16 15:21:33

ANo.3

こんにちは
Excelファイルを開いて、Alt+F11でVBE画面を開いて、メニューバーの挿入で
標準モジュールを挿入し、
Function CountIFColor(f As Variant, t As Range, ColorInd As Variant) As Variant
  Dim i As Long
  Dim r As Range
  Application.Volatile
  For Each r In t
    If r.Interior.ColorIndex = ColorInd Then
      If r.Value = f Then
        i = i + 1
      End If
    End If
  Next
  CountIFColor = i
End Function
を、コピペします。
セルP1に
=CountIFColor(O1,$D$2:$G$11,6)
と入力しP15までフィルコピーします。
CountIFColor(指定文字列,データ範囲,カラーインデックス番号)
です。

投稿日時 - 2016-11-16 14:10:26

補足

ご回答ありがとうございます。

当該エクセルのVBA画面(Module1)に、既に別のコードが入っていました・・・。そちらの内容は、色つきセルをただ数えるものなのですが、この画面に別のコードを入れてもいいものなのでしょうか?

投稿日時 - 2016-11-16 14:45:21

ANo.2

>Excel2010で、色つきセルの中で指定した文字列を数える数式はありますか?
組み込み関数で任意に塗りつぶしをしたセルが検出できるものは無いようです。
条件付き書式で塗りつぶしの色を指定している場合はその条件を利用すれば処理可能かも知れません。
具体的な模擬データとセルを塗りつぶす条件を提示して頂ければ関数での処理方法を探してみます。
マクロ(VBA)であれば可能のはずですが私は不得手なのでアドバイスできません。

投稿日時 - 2016-11-16 13:06:43

補足

ご回答ありがとうございます。
塗りつぶすかどうかは、提出書類を見て判断するので、手動なんです・・・。
エクセル関数ではできなさそうですね。

投稿日時 - 2016-11-16 13:41:38

ANo.1

こんにちは
データ範囲が1列ならば、オートフィルタを設定して色つきセルだけ抽出して、
指定した文字列を数える数式をセットすれば可能では有りますが、複数列範囲
とかになるなら、VBAで処理する事になると思います。
セルA1が項目名で、A2:A27にデータが有るとして、セルB1に
=SUMPRODUCT(SUBTOTAL(3,OFFSET(A1,ROW(INDIRECT("1:"&ROWS(A2:A27))),))*(A2:A27="指定文字"))
とセットしておいて、A列をオートフィルタで色つきセルだけに絞り込むと、表示された
データの中の「指定文字」のセルだけカウントされます。
1列でないとしたら、判定するデータ範囲とか指定文字とか色とか、具体的に提示される
とVBAでも回答出来るかと思います。

投稿日時 - 2016-11-16 11:36:13

補足

ご回答ありがとうございます。
・15の項目をO1~O15に記載してある。
・D2~G11の範囲(よって1列ではありません。)に、15の項目のどれかが入力されており、色つきセルの色は、「標準の色」のなかの黄色。
・黄色で塗りつぶされていて、かつ、O1に入力された文字列と一致するセルの数は、P1に出てくるようにしたい。O15まで文字列を入力しているので、P15まで同様にする。

範囲についてはシートにより異なるため、一例です。

このような補足でよろしかったでしょうか。
よろしくお願いいたします。

投稿日時 - 2016-11-16 13:23:39

あなたにオススメの質問