- ベストアンサー
エクセルで同色のセルだけ合計したい
エクセルの売上表で、担当者ごとに行単位でセルの色を変えています。 担当者ごとの合計を出す際に同色のセルだけ合計できる機能はないでしょうか。 条件つき書式等見てみましたが、見当たりませんでした。 おねがいします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>HTMLみたいな?ものなんでしょうか。 オイラもよく分かりませんが、VBA(ビジュアルベーシック)を使う スクリプトというプログラム言語らしいです。 決められた約束事に従って記述するという意味ではHTMLと似ている かも知れませんが、HTMLは主に表示を制御しているんじゃないかな? マクロはソフト的な動きも命令で制御しているはずです。 >マクロは時間のある時勉強してみたいと思います。 第1項の方法は、ユーザーが任意に関数を定義してしまうという マクロの1種らしです。 オイラも意味はよく分かっていないのです。 ただ、コピー&ペースで 利用させていただいているに過ぎません。 そして、第2項の方法はそのマクロを使わない方法なのです。 しかし マクロのユーザー定義関数を使った方が、手順や説明が簡単なのです。 それに比べて第2項の「GET.CELL」という、言わば隠し関数の計算式を 任意の名前で登録する手段は、何回かの段階を踏む必要があり、手続きが 面倒なのでオイラにもうまく説明できないのです。 その為、実際のサンプルファイルを見た方が理解が早かったりします。 因みに、「=GET.SEL()」という式自体は実際のシートのセル上から確認 することはできません。 そのとき定義した式の名前、例えば「=フォントの色(任意)」などと いう関数?が記述され、その該当セルには計算(判定)結果が数字で表示 されます。そして、その結果を利用して集計やカウントをするわけです。
その他の回答 (5)
- Niwatori-Sanpo
- ベストアンサー率62% (1168/1867)
ANo.4 です。 >2 実は、マクロを使わない方法があります。 どうやら、この方法もいちおうマクロの仲間に入るらしいです。 なお、サンプルファイルをダウンロードできるサイトを見付けたので 紹介しておきます。 http://pc.nikkeibp.co.jp/pc21/sample/200311/k_fx.shtml 何らかの手助けになれば、幸いです。
- Niwatori-Sanpo
- ベストアンサー率62% (1168/1867)
1 残念ながらマクロを使わないと,ご希望のことは難しいというのが 定説のようです。 以下に一例を記しますので、参考にしてください。 (1) [ツール]-[マクロ]-[VisualBasicEditor](またはAlt + F11)で VBE画面にします。 (2) VBE画面上で[挿入]-[標準モジュール]を選択します。 するとコードウィンドウが出ますので、以下のコードを記します。 (点線内をコピー&ペーストでもOK) ---------------------------------------------------------------- Function SpecialCell(targetRange As Range, _ intColor As Integer) As Integer '赤は3,緑は4,青は5,黄は6 Dim myCell As Range For Each myCell In targetRange If myCell.Font.ColorIndex = intColor _ Or myCell.Interior.ColorIndex = intColor Then SpecialCell = SpecialCell + 1 End If Next End Function ---------------------------------------------------------------- (3) 元のワークシートに戻って、適当なセルに 赤字のカウントは =SpecialCell(A1:E5,3) 青字のカウントは =SpecialCell(A1:E5,5) 黄字のカウントは =SpecialCell(A1:E5,6) などとすればOKです。 ただしフォント色が黄でセル色が青などというのは、どちらにも カウントされてしまうので注意。 ☆参考:ブックの標準カラーパレットのインデックス番号 (VBエディタのヘルプにて「ColorIndex」を検索して、参照) 1 黒 2 白 3 赤 4 黄(薄)緑 5 青 6 黄 7 桃色 8 水色 9 茶色 10 緑 11 紺 (濃い緑) 以下 ~ 56 まであるようです。 ※参考(別解) --------------------------------------------------------------- Function ColoredCell(rngArg As Range, rngSample As Range) As Long For Each c In rngArg If c.Interior.ColorIndex = rngSample.Interior.ColorIndex Then ColoredCell = ColoredCell + 1 End If Next End Function --------------------------------------------------------------- 使う際には =ColoredCell(A1:A10,A5) といったように、第1引数は 調べたい範囲、第2引数には指定する色の(サンプル)セルを当てる。 ※SUMIF 関数の併用も可 2 実は、マクロを使わない方法があります。 5~6年程前に、何処かで教わった記憶があります。 色を判定する式(=GET.CELL(**,**))をブックに登録、判定結果を 表示したいセルに、登録した式の定義名で記述する。 その判定結果を SUMIF や COUNTIF 関数の引数として再利用する。 (1) 色を判定する式を登録 メニューバー「挿入」→「名前」→「定義」名前の定義画面にて 「参照範囲」欄に 「=GET.CELL(検査の種類を指定する番号,判定したいセル番地)」 名前欄に式の名前を(「文字の色」や「セルの色」等)付けて 「追加」→「OK」で登録完了 ☆検査の種類を指定する番号とは? 20→フォントは太字か否か?を判定 24→文字フォントの色を判定 63→セルの塗りつぶし色を判定 なお、後から書式を変更しても結果が自動的には更新されないので、 NOW 関数を組み込み「F9」キーで更新させた方が良いようです。 例「=GET.CELL(**,**)+NOW()*0」(0を足している為、値に影響なし) (2) 判定した結果を表示させる 判定結果を表示したいセルに「=定義した名前」という式を入力 すると色の種類すなわち色の番号を判定結果として表示してくれる 色の番号の一例 黒字(無指定)=>0 赤 =>3 青 =>5 緑 =>10 薄緑 =>4 ※その他も、実際に試してみれば結果は分かるはず (3) 判定した結果を、SUMIF や COUNTIF関数の引数として利用する。 言葉で説明するのは非常に難しくこれで理解していただけるかどうか 自信がありませんが、この、色の判定式を登録してしまうという方法は Excel97 から Excel2002までのバージョンで活用できることは確認済み です。 実際のサンプルファイルを見ていただければいいのですが、なかなか 良い方法が思いつきません。 Excel2007 で読み込んでも反映されましたが、2007でどう作成するの かは、残念ながらメニュー体系が分からないオイラには説明できません。
- zap35
- ベストアンサー率44% (1383/3079)
過去同じようなご質問が何回もありました。いずれにせよマクロを使用しないとどうしようもありません。(#01さんが言われるようにワークシート関数ではできません) 質問文にはマクロを書くだけの材料が全く書かれていないので、過去の例を挙げるだけにとどめておきます。 1)色を指定して集計までするマクロ http://oshiete1.goo.ne.jp/qa3153185.html http://oshiete1.goo.ne.jp/qa2912628.html 2)背景色を取得するマクロ(集計はSUMIF関数で別に行う) http://oshiete1.goo.ne.jp/qa3244298.html
お礼
ありがとうございます。 マクロ少し調べてみましたが、難しそうなので他の方法を探してみます。
- nayuta_lot
- ベストアンサー率64% (133/205)
担当者ごとに合計するなら、担当者コードとかを集計キーにして (1)別表にSUMIF関数で合計をとる (2)昇順に並べ替えて、データ>集計を使用する (3)ピボットテーブルを使用する といった方法でやるほうがいいですよ。
補足
ありがとうございます。 担当者コード・ピボットテーブルってなんですか? 調べてみましたが、よく分かりませんでした。 質問ばかりいですいません。
- imogasi
- ベストアンサー率27% (4737/17069)
出来ません。 条件つき書式を考えるのは見当違いです。 普通ここへ質問する人は、関数利用でもって出来ないかということを(言外に含めている)人が多いので、関数を使っては不可能です。 VBAを勉強するか、(VBA ColorIndexでWEB照会してみたら) 色に注目しないで担当者名というセルの値に注目して、SUMIFj関数など使えないか 勉強してください。 セルの色は「セルの書式」に属するもので、関数は「セルの値」を判別したり、計算に使ったりするものです。 セルの書式ー>セルの値にするVBAでの方法があるのでそれを使う手もありますが。 2007では、セルの色でならべ変える(いままでの常識ではセルの値で並べ替える)ところまできているようなので、将来にMS社はこういう機能を作るかも知れませんが。 参考 http://www.excel-img.com/database08.html
お礼
ありがとうございます。 勉強してみます。
お礼
詳しい回答をありがとうございます。 HTMLみたいな?ものなんでしょうか。 マクロは時間のある時勉強してみたいと思います。