[[20031213210121]] 『色付き文字のカウント方法』(シモちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『色付き文字のカウント方法』(シモちゃん)

 下記の様な表があって、チーム毎のカウントをするのに、チーム名がフォントの色で分けれ れている場合、赤のフォントの文字は赤のチームの所に、黒のフォントの文字は黒のチーム に、青のフォントの文字は青のチームにカウントされるようにしたいのですが、どうしたら いいか教えて下さい。(エクセル初心者です)宜しくお願いします。

                       チーム名 チーム名 チーム名 チーム名

 赤チーム 2 黒チーム 1 青チーム 1   赤チーム 黒チーム 赤チーム 青チーム

 赤チーム 0 黒チーム 3 青チーム 1   黒チーム 黒チーム 黒チーム 青チーム

 赤チーム 4 黒チーム 0 青チーム 0   赤チーム 赤チーム 赤チーム 赤チーム

    A    B       C         D           E           F           G
 1  赤   黒   青    第1試合  第2試合  第3試合  第4試合
 2  
 3

 A2 に =COUNTIF($D2:$G2,A$1 & "*")
 と入れて、この式を必要な範囲にコピーします。シモちゃんが本当に初心者なら、
 カラーでなく、上記のような方法で処理された方がいいと思います。
 初心者じゃなくても、それをお勧めしたいと思います。(通りすがりの者)

 おはようございます。
 「通りすがりの者」さんの方法が最良の方法やと私も思いますわ。既存の関数で処理
 でけますさかいナ。

 でなかったら賢者の「潔しとしない」マクロの力を借りなあきまへんさかいなぁ。
 ま、一応作ってみましたんで、遊びや思うて試してみておくんなはれ。

 「Alt」+「F11」でVBEを開いてください。
 「ThisWorkbook」をダブルクリックでシートモジュールを表示して下さい。
 そこへ下のコードをコピペして下さい。
 ひょっとしたらWorkbook_Openっちゅうんが出てくるかも知れまへんが、そんなんは
 無視しとっておくんなはれ。

 '----------------------
 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.Calculate
 End Sub
 '----------------------
 慌てんでもよろしいんやで、失敗したら何回でもやり直せますさかいナ。
 今度は「挿入」→「標準モジュール」を選択しておくんなはれ。
 真新しい画面が表示されますから、そこへ下のコードをコピペですわ。

 '------------------------
 Function kuro(data As Range)
    Application.Volatile
    For Each c In data
        If c.Font.ColorIndex = 1 Or c.Font.ColorIndex = xlAutomatic Then
            Cnt = Cnt + 1
        End If
    Next c
    kuro = Cnt
 End Function
 '-------------------------------
 Function aka(data As Range)
    Application.Volatile
    For Each c In data
        If c.Font.ColorIndex = 3 Then
            Cnt = Cnt + 1
        End If
    Next c
    aka = Cnt
 End Function
 '---------------------------------
 Function ao(data As Range)
    Application.Volatile
    For Each c In data
        If c.Font.ColorIndex = 5 Then
            Cnt = Cnt + 1
        End If
    Next c
    ao = Cnt
 End Function
 '-----------------------------------

 旨い事コピペでけましたかいな?
 でけたら、「Alt」+「Q」でエクセルに戻って下さい。
 これで準備完了ですわ。
 赤のカウントを出したいセルに =aka(a1:e1) ←データの範囲を指定
 青のカウントを出したいセルに =ao(a1:e1)
 黒のカウントを出したいセルに =kuro(a1:e1)
 とそれぞれ記入して、必要なだけ下方向にコピーして下さい。

 どうでっか?旨い事いきましたかいな?
 ただ1つ難点がおまんねん。データを変換した場合、このカラーと言う奴は再計算して
 くれん時がありまんねんなぁ、これが。「Shift」+「F9」でやってくれますけど、な
 んとなく面倒でっしゃろ?
 まぁ、いっぺん試してみておくんなはれ。

 使えんようやったらVBAを開いて「Module」を右クリックして「Moduleの解放」を選択
 しておくんなはれ。
    ほな...(弥太郎)

 横からすみません。
思うに、単に赤・青・黒の3チームではなく、フォント色は○部所属かなんかの区分けで、チーム名はもっとある?
それで例題の表を見ると、例えば赤(1部)、青(2部)、(3部)と分ける必要があるという意味でしょうか?
このサイトで習ったGET.CELL関数で可能なことは可能です。
 A  B  C  D   E   F   G  H  I    J  K  L  M  N
1 赤 青 黒   チーム名 チ名 チ名 チ名   
2          赤  黒  赤  青   文字色
3          黒  黒  黒  青   文字色
4          赤  赤  赤  赤   文字色
というセル配置として、J2に"文字色"と入力してください(J3,J4にも)。
K2セルに、挿入→名前→定義と進み、参照範囲に =GET.CELL(24,sheet1!E2) 、名前を文字色とします。
k2セルに、=文字色  と入力し、K2セルをN2までコピー&ペースト。
k2から順に、3・0・3・5となりました?ついでにN4までフィルします。
A2に =COUNTIF(($K2:$N2,3) これをA4までフィル。
同じくB2は=COUNTIF($K2:$N2,5) 、C2は=COUNTIF($K2:$N2,0)として下にフィルで計算できます。
ちなみにGET.CELL(検査の種類、範囲)となってまして、(24)はフォントの色、
他にフォントサイズ(19)、太字(20)、斜体(21)、数式入力(48)、塗りつぶし色(63)などを抽出します。

 ついでに、これまでも何回か出現していますがヘルプにも無い関数なので、
(通りすがりの者)さんの言うように別な関数を考えるのが本筋だそうです。
     関数で手一杯で、弥太郎さんのコードはたまる一方です。   学習中の(kobi)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.