• ベストアンサー

エクセルで色のついたセルを数えるには?

エクセルで、色のついたセルを色ごとに、数えたいのですが 出来るのでしょうか? どうやればいいのでしょうか? 教えてください。

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

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

#2のご解答に比べるまでもなく、幼稚ですが、短く、印象的にも少しでも判りやすいと思いますので#1の方の示唆されている解答の一例を載せます。 単純化するため、一色でしか色がついていないものとします。白と赤とか。白と赤と黄なら赤と黄のセルの合算セル 数がでます。 Sub Macro2() For i = 1 To 10   For j = 1 To 50   If Cells(i, j).Interior.ColorIndex <>       xlNone Then 'この行は上行の右端に続ける   k = k + 1    End If  Next j Next i MsgBox k End Sub 「10」のところは、右端列がA列=1、B列=2、、J列なら10です。自分のシートに合わせて変えてください。 「50」のところは、最下行の行番号です。自分のシートに合わせて変えてください。 Cells(i,j)の部分はi列、j行のセルの色(コード)(Interior.ColorIndex)が「色なし=xlNone 」かどうかを1つづつ聞き、色なしでなければ、カウンター=kに1を足しています。 終わりに画面にセル数を表示(Msgbox k)しています。 文字の色を問題にするなら、「.Interior.ColorIndex」の 所を「.Font.ColorIndex」に変えてください。 上記を行うには、エクセルの解説書の「マクロの記録」の章を読み、何の操作でも良いから、マクロの記録を行い、ツール-マクロ-マクロ-編集で出てくる中身をそっくり削除し、上記をコピーして貼りつけて 実行してください。

selvato
質問者

お礼

ありがとうございました。 なんとなく理解できそうですので、 エクセルの解説書を読んで やってみたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

サンプルの自動作成スクリプトを差し上げます。 以下の文章をメモ帳に貼り付けて ittochan.vbs として保存します。 保存したファイルをダブルクリックしてみてください。 うまくいかなかったら、お知らせください。 ---この下から--- Set WshShell = CreateObject("WScript.Shell") p( "自己責任でね``r(・_・;) ポリポリ" ) dim Exl set Exl = WScript.CreateObject("Excel.application") Exl.Visible=True Exl.Workbooks.add p( "色を付けます" ) Exl.Range("A1:A20").select for each i in Exl.Selection c=Int((44-42+1)* Rnd + 42) i.Interior.ColorIndex = c next Exl.Range("C1:C4").select c=42 for each i in Exl.Selection i.Interior.ColorIndex = c c=c+1 next Exl.Range("A1").select p( "マクロを作成します" ) sk("%TMM") act("マクロ") sk("Macro1%C") act("Microsoft Visual Basic") sk("Dim i,j,c~For Each i In Selection~c=0~For Each j In Range+8+2A1{:}A10+2+9~If j.Interior.ColorIndex+-i.Interior.ColorIndex Then~c+-c{+}1~End If~Next~i.Value+-c~Next%FC") act("Microsoft Excel") p( "C1:C4を選択します") Exl.Range("C1:C4").select p( "マクロを実行します" ) act("Microsoft Excel") sk("%TMM") act("マクロ") sk("%R") p( "終了しました" ) sub act(titlename) for j=0 to 600 WScript.Sleep(100) if wshShell.AppActivate( titlename ) then WScript.Sleep(1000) exit sub end if next WScript.Quit end sub sub sk(msg) wshShell.SendKeys(msg) end sub sub p( msg ) if WshShell.Popup( msg ,,"~( ̄∇ ̄~)(~ ̄∇ ̄)~",52 ) = 7 then WScript.Quit end if end sub ---この上まで---

selvato
質問者

お礼

ありがとうございました。 遅くなりましたが、今やってみましたら、 ノートンアンチウィルスが、作動しましたので、 途中でストップしましたが・・・大丈夫ですよね?

すると、全ての回答が全文表示されます。
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

同様な質問がありました。ご参考に。 色付セルの集計(エクセル) http://www.okweb.ne.jp/kotaeru.php3?q=212717

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=212717
selvato
質問者

お礼

ありがとうございました。 難しそうですが、やってみます。

すると、全ての回答が全文表示されます。
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.1

VBマクロで 各セルの Interior.ColorIndexの値を参照してはどうでしょうか。 それともWSHのVBScriptでスクリプトを作成するとかは どうでしょうか。

selvato
質問者

お礼

ありがとうございました。 でも、初心者の私には難しすぎて、書かれていることが全然理解できません。

すると、全ての回答が全文表示されます。

関連するQ&A