Page 551 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼背景色をつけたところをカウントできるのかどうか? marinoa 03/1/14(火) 16:56 ┗Re:背景色をつけたところをカウントできるのかどうか? Jaka 03/1/14(火) 17:25 ┗Re:背景色をつけたところをカウントできるのかどうか? marinoa 03/1/15(水) 9:21 ┗Re:背景色をつけたところをカウントできるのかどうか? marinoa 03/1/15(水) 9:47 ┗Re:背景色をつけたところをカウントできる... ポンタ 03/1/15(水) 10:45 ┗Re:背景色をつけたところをカウントできる... marinoa 03/1/15(水) 11:01 ┗Re:背景色をつけたところをカウントできる... ポンタ 03/1/15(水) 11:13 ┣Re:背景色をつけたところをカウントできる... marinoa 03/1/15(水) 13:48 ┃ ┗Re:背景色をつけたところをカウントできる... Jaka 03/1/15(水) 14:19 ┃ ┗Re:背景色をつけたところをカウントできる... marinoa 03/1/15(水) 16:38 ┗Re:背景色をつけたところをカウントできる... marinoa 03/1/15(水) 16:39 ┗Re:背景色をつけたところをカウントできる... ポンタ 03/1/15(水) 20:31 ─────────────────────────────────────── ■題名 : 背景色をつけたところをカウントできるのかどうか? ■名前 : marinoa ■日付 : 03/1/14(火) 16:56 -------------------------------------------------------------------------
セルに背景色をつけたあと、その色をつけた部分を縦計として計算できるのでしょうか? |
こんにちは。 こんな感じ。関数として使うならちょっと変わります。 対象を整数のみとしてあります。 使用状況に応じて、宣言のLongを変えて下さい。 Sub Color計() Dim 合計 As Long For Each セル In Range("D1:D1650") If セル.Interior.ColorIndex = 色番号 Then 合計 = Application.WorksheetFunction.Sum(合計, セル) End If Next MsgBox 合計 End Sub |
ありがとうございます 大変たすかりました 関数になると少しちがうという意味がいまいちわからないので よろしければ教えてもらえないでしょうか? |
もう少し詳しくいうと 縦計をだすのですが、色をつけたセルを0.5という数値に設定し、色をつけたところだけを合計するということは可能でしょうか? また、色が違うセルがある場合は色別に合計を求めるということも可能でしょうか? |
横から失礼します。 >色をつけたセルを0.5という数値に設定し、 もともと入っていた値はどうするんですか? 空白セルに色がついているだけなのでしょうか? もともと入っていた値を無視してしまっていいのなら、 以下のコードをお試しください。 アクティブセルのある列、丸々1列分を対象に集計してます。 Sub test() Dim MySum(56) As Single Dim i As Long, MyColorIndex As Integer Dim Mes As String For i = 1 To 65536 MyColorIndex = Cells(i, ActiveCell.Column).Interior.ColorIndex If MyColorIndex <> xlColorIndexNone Then Cells(i, ActiveCell.Column).Value = 0.5 MySum(MyColorIndex) = MySum(MyColorIndex) + Cells(i, ActiveCell.Column).Value End If Next For i = 1 To 56 If MySum(i) > 0 Then Mes = Mes & i & ":" & MySum(i) & vbCr End If Next MsgBox (Mes) End Sub |
ありがとうございます セルの中には値もなにもはいってなく、色をつけるのみです。 色をつけたところを合計したいだけなのですが、色をつけた部分は1セル0.5に設定したいのです。 すみません。説明が下手で・・・ |
それなら、2774で投稿したコードで多分動くと思います。 標準モジュールに貼り付けて、実行してみてください。 |
ありがとうございます。 色がついているところに0.5が表示されるんですよね 色が違う場合別々のセルに合計をだすということは可能ですか? 背景色青の合計と背景色黄色の合計というように合計をだしたいとおもうのですが・・ |
こんにちは。 良く解ってないけど..。 下記関数コードを標準モジュールに貼りつけた後、 色のついたセルがA1〜A20だとすると B1に =セル色No(A1) と書き、A20までフィルドラッグして関数をコピー。 A列の色番号がB列に出ますから、 合計を出したい色が6だとすると、 合計を出したいセルに =COUNTIF(B1:B20,"=6")*0.5 で、どうでしょう? 標準モジュールにコピペ (GET.CELLって言うマクロ関数を使うと、下記コードと言うかマクロが必要無くなるけど。因にGET.CELL関数の使い方は良く解りません。) Function セル色No(セル As Variant) As Variant Application.Volatile セル色No = セル.Interior.ColorIndex End Function |
すごくたすかりました ありがとうございます わかりやすかったです。 本当にありがとうございました。 |
いろいろ考えてくださって本当にありがとうございました。 すごく勉強になりました また教えてください。 |
解決しているような気もしますが、 別案を投稿しておきます。 Sub test() Dim MySum(56) As Single Dim i As Long, MyColorIndex As Integer Dim Mes As String For i = 1 To 65536 MyColorIndex = Cells(i, ActiveCell.Column).Interior.ColorIndex If MyColorIndex <> xlColorIndexNone Then MySum(MyColorIndex) = MySum(MyColorIndex) + 0.5 End If Next For i = 1 To 56 With Cells(i, ActiveCell.Column + 1) .Value = "この色のセルは " & MySum(i) .Interior.ColorIndex = i End With Next End Sub |