過去ログ

                                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
 -------------------------------------------------------------------------
   セルに背景色をつけたあと、その色をつけた部分を縦計として計算できるのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできるのかどうか?  ■名前 : Jaka  ■日付 : 03/1/14(火) 17:25  -------------------------------------------------------------------------
   こんにちは。
こんな感じ。関数として使うならちょっと変わります。
対象を整数のみとしてあります。
使用状況に応じて、宣言の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
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできるのかどうか?  ■名前 : marinoa  ■日付 : 03/1/15(水) 9:21  -------------------------------------------------------------------------
   ありがとうございます
大変たすかりました
関数になると少しちがうという意味がいまいちわからないので
よろしければ教えてもらえないでしょうか?
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできるのかどうか?  ■名前 : marinoa  ■日付 : 03/1/15(水) 9:47  -------------------------------------------------------------------------
   もう少し詳しくいうと
縦計をだすのですが、色をつけたセルを0.5という数値に設定し、色をつけたところだけを合計するということは可能でしょうか?
また、色が違うセルがある場合は色別に合計を求めるということも可能でしょうか?
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : ポンタ  ■日付 : 03/1/15(水) 10:45  -------------------------------------------------------------------------
   横から失礼します。

>色をつけたセルを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
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : marinoa  ■日付 : 03/1/15(水) 11:01  -------------------------------------------------------------------------
   ありがとうございます
セルの中には値もなにもはいってなく、色をつけるのみです。
色をつけたところを合計したいだけなのですが、色をつけた部分は1セル0.5に設定したいのです。
すみません。説明が下手で・・・
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : ポンタ  ■日付 : 03/1/15(水) 11:13  -------------------------------------------------------------------------
   それなら、2774で投稿したコードで多分動くと思います。

標準モジュールに貼り付けて、実行してみてください。
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : marinoa  ■日付 : 03/1/15(水) 13:48  -------------------------------------------------------------------------
   ありがとうございます。
色がついているところに0.5が表示されるんですよね
色が違う場合別々のセルに合計をだすということは可能ですか?
背景色青の合計と背景色黄色の合計というように合計をだしたいとおもうのですが・・
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : Jaka  ■日付 : 03/1/15(水) 14:19  -------------------------------------------------------------------------
   こんにちは。

良く解ってないけど..。
下記関数コードを標準モジュールに貼りつけた後、
色のついたセルが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
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : marinoa  ■日付 : 03/1/15(水) 16:38  -------------------------------------------------------------------------
   すごくたすかりました
ありがとうございます
わかりやすかったです。
本当にありがとうございました。
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : marinoa  ■日付 : 03/1/15(水) 16:39  -------------------------------------------------------------------------
   いろいろ考えてくださって本当にありがとうございました。
すごく勉強になりました
また教えてください。
 ───────────────────────────────────────  ■題名 : Re:背景色をつけたところをカウントできる...  ■名前 : ポンタ  ■日付 : 03/1/15(水) 20:31  -------------------------------------------------------------------------
   解決しているような気もしますが、
別案を投稿しておきます。

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
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 551