• ベストアンサー

excel 特定の色のセルだけ

特定の色のセルを選び出して、そこに入力されている数量を合計する方法を教えて下さい。 販売数の推移集計表を作っています。 A1は9/1分、A2は9/2分・・・というようにA20まで、販売数を入力しています。途中で値下げをするので、値段ごとにセルの色を変えていますが、この色別の販売数を計算したいと思っています。 例えば、A1からA20のうち黄色のセルに入っている数の合計、というのは計算できますか? どうすればよいか教えて下さい。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 条件付き書式ではなく、個々に色を付けている場合は、通常の操作・関数では出来ません。 以下のページを参考にして下さい。 どこか作業列に色番号を表示して、それを元に集計(COUNTIFやSUMIF)するものです。 なお、バージョンは2000でもOKです。 http://www.moreexcellent.com/excel/tips/color.htm

参考URL:
http://www.moreexcellent.com/excel/tips/color.htm
diamond193
質問者

お礼

ありがとうございました。 元のワークシートをコピーして教えていただいた方法で色番号を表示させ、SUMIFを使って集計できました。

その他の回答 (3)

noname#148473
noname#148473
回答No.4

他の方も書いておられるように、ワークシート関数ではセルの背景色を扱えないため、関数レベルでは対応できない問題です。 が、VBAを使えば可能です。 まず、集計に用いるシートのシート名の部分を右クリックし、「コードの表示」を選びます。するとVisualBasicEditorが開きますので、右側の白い空欄に点線内のマクロをコピー⇒貼り付けしてください。 '------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim C As Variant ia = 0 cl = ActiveSheet.Range("B1").Interior.ColorIndex ' ←B1セルの色番号を取得 For Each C In ActiveSheet.Range("A1:A20") ' ←ここに集計範囲を指定 If C.Interior.ColorIndex = cl Then ia = ia + C.Value End If Next C ActiveSheet.Range("B1").Value = ia ' ←集計結果をB1セルに表示 End Sub '------------------------------------------------- 貼り付けが済んだら、VisualBasicEditorを閉じて、ワークシートを保存してください。これで準備完了です。 使用方法ですが、B1セルに任意の背景色を設定すると、A1:A20の範囲で、同じ背景色のセルの値を合計して表示します。数値を変更した場合は自動で集計値も変更されますが、背景色を変更した場合は空白セルでDelキーを押すなどして再計算させる必要があります。 なお、マクロ内の「A1:A20」「B1」は適宜変更してください。

diamond193
質問者

お礼

とてもご丁寧にありがとうございました。 やってみました。できました! すごいですね、ちょっと感動しました。 しかし、実はデータは100行分くらいあって、それぞれを同様に計算したいんです。質問の仕方が悪かったですね。 ですので、この方法はちょっと今回は使えないみたいです。 今後、別の表を作るときに活かさせていただこうと思います。ありがとうございました。 この欄を借りてみなさんにもう一度お礼申し上げます。 短時間にご親切で分かりやすいご回答ありがとうございました。とても助かりました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

(1)出来ますか?    A.関数で  多分こちらを思っている?    B.VBAで 出来ます (2)(1)のAの不能理由     関数は「書式」の色を捉えられない。     関数は「値」を判別したり加工するものです。 (3)色を付けた時の、量的制約     (例えば10以上20未満は赤色)が判ってお   れば、関数式の中に組みこんで、「10以上20未満   のセルの合計を出す」と言う問題に置き換わります。 =SUMIF(A1:A7,">=10",A1:A7)-SUMIF(A1:A7,">=20",A1:A7) (4)VBAも設定した色コードが判っておれば、    If Cells(i, "B").Interior.ColorIndex = 6 Then   (加算)   End If のようにプログラムを組めば出来ます。       

diamond193
質問者

お礼

ご指摘のように関数で解決できないかと思っておりました。(VBAまで考えが及ばなかったので…) 教えていただいたことは今後に活かしたいと思います。 ご回答ありがとうございました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

条件付き書式でセルに色づけし、 そのセルの値によって合計、とした ほうがやりやすいと思います。 回答でなくすみません。

diamond193
質問者

補足

アドバイスありがとうございます。 前任者が質問に書いた形で表を作っていまして、データの蓄積がその表にしかないので、何とか利用できないかと悩んでおります。商品ごとに一行で作っているので、実はかなりの数のデータなのでそのまま使えたら嬉しいのです。

関連するQ&A

専門家に質問してみよう