- 締切済み
エクセル
Excel2010で、色つきセルの中で指定した文字列を数える数式はありますか? 入力された文字列は15種類、それが色つきセルになっているものと、色がついていないセルに分かれています。文字列別のカウント(色つきセルも色無しセルも区別のない、文字列のみの条件でのカウント)はCOUNTIFで既に出ていますが、色つきになっているセル限定で文字列別にカウントするのはどうしたらいいでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- heisukewada
- ベストアンサー率58% (93/160)
とても面倒なのですが・・・ シート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で数えたらいいと思います。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは Module1でも大丈夫だと思いますけど、Module2を挿入してそちらにコピペ してもいいです。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは 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(指定文字列,データ範囲,カラーインデックス番号) です。
- bunjii
- ベストアンサー率43% (3589/8249)
>Excel2010で、色つきセルの中で指定した文字列を数える数式はありますか? 組み込み関数で任意に塗りつぶしをしたセルが検出できるものは無いようです。 条件付き書式で塗りつぶしの色を指定している場合はその条件を利用すれば処理可能かも知れません。 具体的な模擬データとセルを塗りつぶす条件を提示して頂ければ関数での処理方法を探してみます。 マクロ(VBA)であれば可能のはずですが私は不得手なのでアドバイスできません。
補足
ご回答ありがとうございます。 塗りつぶすかどうかは、提出書類を見て判断するので、手動なんです・・・。 エクセル関数ではできなさそうですね。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは データ範囲が1列ならば、オートフィルタを設定して色つきセルだけ抽出して、 指定した文字列を数える数式をセットすれば可能では有りますが、複数列範囲 とかになるなら、VBAで処理する事になると思います。 セルA1が項目名で、A2:A27にデータが有るとして、セルB1に =SUMPRODUCT(SUBTOTAL(3,OFFSET(A1,ROW(INDIRECT("1:"&ROWS(A2:A27))),))*(A2:A27="指定文字")) とセットしておいて、A列をオートフィルタで色つきセルだけに絞り込むと、表示された データの中の「指定文字」のセルだけカウントされます。 1列でないとしたら、判定するデータ範囲とか指定文字とか色とか、具体的に提示される とVBAでも回答出来るかと思います。
補足
ご回答ありがとうございます。 ・15の項目をO1~O15に記載してある。 ・D2~G11の範囲(よって1列ではありません。)に、15の項目のどれかが入力されており、色つきセルの色は、「標準の色」のなかの黄色。 ・黄色で塗りつぶされていて、かつ、O1に入力された文字列と一致するセルの数は、P1に出てくるようにしたい。O15まで文字列を入力しているので、P15まで同様にする。 範囲についてはシートにより異なるため、一例です。 このような補足でよろしかったでしょうか。 よろしくお願いいたします。
補足
ご回答ありがとうございます。 当該エクセルのVBA画面(Module1)に、既に別のコードが入っていました・・・。そちらの内容は、色つきセルをただ数えるものなのですが、この画面に別のコードを入れてもいいものなのでしょうか?