VBAで色つきセルの数値足し算

このQ&Aのポイント
  • VBAを使用して、色つきのセルの数値を足し算する方法について教えてください。
  • 具体的には、特定の日付(2018/3/19)の測定と書かれた列の数を、色ごとに足し算してメッセージボックスで表示したいです。
  • また、次の日(2018/3/20)の残数も色ごとに足して表示したいです。
回答を見る
  • ベストアンサー

VBAで色つきセルの数値足し算

セルの色で足し算をするマクロについて教えて下さい。 添付画像のようなシートがある場合 マクロを実行するとその実行した日と同じ日付(2018/3/19)の 測定と書いてある列(S列)の数を計算をしたいです。 その際色ごとに足し算をしてその結果をメッセージボックスで表示したいです。 ピンク5個 緑11個 黄色5個 青1個 このような形です。 さらに次の日(2018/3/20)の残数も色ごとに足して メッセージで表示したいです。 ピンク残りは6個 緑残りは4個 黄色残りは5個 青残りは2個 といった感じです。 計算する行は9行目から20行目までで 列の形は4列で1日の表示をしてあります。 どうか宜しくお願いします。

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

ColorIndexだけでは色名が解りませんので、色名情報を作業列に持ちましょう。 添付の例ではCV列を作業列として各行の色の名前を入れておきます。 で、サンプルコードです。 Sub Sample()   nCol = Rows("2:2").Find(What:=Int(Now())).Column + 1   Set todayDic = CreateObject("Scripting.Dictionary")   Set nextDic = CreateObject("Scripting.Dictionary")   For i = 9 To Cells(Rows.Count, "CV").End(xlUp).Row     sColor = Cells(i, "CV")     nDataToday = Cells(i, nCol).Value + 0     nDataNext = Cells(i, nCol + 3).Value + 0     If Not todayDic.exists(sColor) Then       todayDic.Add sColor, nDataToday       nextDic.Add sColor, nDataNext     Else       todayDic(sColor) = todayDic(sColor) + nDataToday       nextDic(sColor) = nextDic(sColor) + nDataNext     End If   Next i   sMessToday = "本日" & vbCrLf   sMessNext = "翌日" & vbCrLf   todayKey = todayDic.keys   todayItem = todayDic.items   nextItem = nextDic.items   For j = 0 To UBound(todayKey)     sMessToday = sMessToday & todayKey(j) & todayItem(j) & "個" & vbCrLf     sMessNext = sMessNext & todayKey(j) & "残りは" & nextItem(j) & "個" & vbCrLf   Next j   MsgBox sMessToday & "------" & vbCrLf & sMessNext End Sub 手抜きコードですので、変数の宣言もしていませんし、本日の日付が無い場合、エラーになります。

yyrd0421
質問者

お礼

お礼が遅くなり申し訳ありません。 頂いたコードを試した結果目的のことが行えました。 本当にありがとうございます。

その他の回答 (1)

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

Excelは色で処理を別けるのが苦手です。 この色は、塗りつぶしで付けていますか?条件付き書式ですか? 色を別ける条件があればそれも教えてください。 また、Excelのバージョンは何でしょう。

yyrd0421
質問者

補足

>この色は、塗りつぶしで付けていますか?条件付き書式ですか? 下記のコードで色を付けています。 >色を別ける条件があればそれも教えてください。 投入という列に数字が入力されると、B列の塗りつぶしの色を反映して同じ色で4日間(休日はとばす)を塗りつぶすコードです。 >Excelのバージョンは何でしょう。 2010です。 宜しくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim myRange As Range Dim l As Long Dim Y As Long l = Target.Row Y = Cells(l, 2).Interior.Color Const ColsUnit = 4 '1日当たりの列数 Const ClearDays = 10 '空欄の時に該当行の背景色を消す日数 Const MyColor = 5287936 '背景色 With ThisWorkbook.ActiveSheet If ((Target.Column Mod ColsUnit = 1) And _ (Target.Column > 5)) Then If ((Target.Value > 0) And IsNumeric(Target.Value)) Then nCol = Target.Column + 1 nCount = 0 Do While nCount < 16 If Cells(2, nCol).Interior.ColorIndex <> 38 Then If nCount = 0 Then Set myRange = Range(Cells(Target.Row, nCol), Cells(Target.Row, nCol + 3)) Else Set myRange = Union(myRange, Range(Cells(Target.Row, nCol), Cells(Target.Row, nCol + 3))) End If nCount = nCount + 4 End If nCol = nCol + 4 Loop myRange.Interior.Color = Y Else Set myRange = _ Range(.Cells(Target.Row, Target.Column + 1), _ .Cells(Target.Row, Target.Column + (ClearDays * ColsUnit))) myRange.Interior.Pattern = xlNone End If End If End With End Sub

関連するQ&A

  • 【VBA】複数条件下での色付

    お願いします。 (XP・エクセル2003) ※たとえばA列に『あ』『い』『う』『え』『お』の5種の文字のいづれかが1行目から100行目まで並んでいるとします。(空白セルはなく必ずいずれかの文字が入っている) (1)『あ』の文字のときにはそのセルの色を赤色、『い』ならば青、『う』ならば黄、『え』ならばピンク、『お』ならば茶、と色をかえるマクロを作りたいのですが、方法がわかりません。 (2)同じく、※の条件下で『あ』もしくは『い』のときにはセルの色をどちらも緑にかえる方法を条件付き書式でなく、マクロで作る必要があるのですが、方法がわかりません。 教えてください。 よろしくお願いします。

  • セル中の”パーセントの数値”によって字の色を変更

    エクセルマクロの機能でセル中の”パーセントの数値”によって字の色を変えて表示させたいと考えています。下記のようなことは可能なのでしょうか? F列3行目と4行目に”パーセントの数値”があります(例:95.23%)。 ここに、下記のような条件で数値の色が変わるようにしたいのですがエクセルのマクロで実現することは可能でしょうか? F列3行目:90%~108%は太字の緑色。0~80%若しくは108.1%以上は太字の赤色。 F列4行目:75%~90%は太字の緑色。0~90%若しくは90.1%以上は太字の赤色。 もし、お時間ある方がいらっしゃりましたらアドバイス頂ければ嬉しい限りです。 恐れ入りますが宜しくお願い致します。

  • 2013 セルの数値によりその行に色をつける方法

    こんにちは Excel2013を使用しています。 A~AM、50列ほどの表があります。 AC行に1~150までの数値が入っています。 そのセルの数値によってその行に色をつけたいと思います。 1~29は色をつけません 30~59はその行に緑を 60~89はその行に黄色を 90以上はその行に赤をと言う具合です。 「ホーム」---「条件付き書式」や =if("AC2">=60 のような式で設定しようと 考えましたが、方法が見つかりません。 マクロを組みたいと思っていますので なお「並び替え」----範囲を「塗りつぶし」以外の方法をお願いします ご存じの方お教えください。

  • VBA_複数条件下での色付

    お願いします。 (XP・エクセル2003) たとえばA列に『あ』『い』『う』の3種の文字のいづれかが1行目から100行目まで並んでいるとします。(空白セルはなく必ずいずれかの文字が入っている) 『あ』の文字のときにはそのセルの色を赤色、『い』の文字なら青、『う』の文字なら黄とかえるマクロを作りたいのですが、方法がわかりません。 教えてください。 お願いします。

  • 超初心者オートシェイプを数値によって色分けしたい

    M列に1から5の5段階評価の数値が入っているのですが それを図に色分けしたいのでマクロでのわかりやすく 簡単な方法を教えてください。 1赤 2ピンク 3黄 4緑 5青 同様の質問が既にありますが土曜日、日曜日と調べながら 挑みましたが、解決できませんでした。 こちらはマクロ超初心者ですのでご理解いただけたらと思います

  • エクセル2003で、数式で出されたセルの値によって、そのセル自体を塗り

    エクセル2003で、数式で出されたセルの値によって、そのセル自体を塗り分けしたいのですが、7種類あるため条件付書式では対応出来ず困っています。 具体的には「2.7000~2.7099」ならピンク、「2.7100~2.7199」なら黄色、「2.7200~2.7299」なら黄色「2.7300~2.7399」なら緑色「2.7400~2.7499」なら青色「2.7500~2.7599」なら紫「2.7600~2.7699」なら灰色 という具合です 漠然としていて申し訳ないのですが、マクロを使用したいと思っています。お力を貸していただけないでしょうか?

  • 【VBA】改行されているセル内のフォント色の判定

    作業表みたいな物があり、ある列(仮にC列とします)が ____________________ ああああ いいいい うううう ____________________ えええ おおお ____________________ AAAAAAA BBBB CCCCCCCCC DDDDD EEEEEEEEEEE ____________________ ・ ・ ・ ・ このような感じで一つのセル内に作業項目があり、 すでに作業完了した行の文字を青で塗っています。 (1行目は「ああああ」と「ううううう」、2行目は「おおお」だけ、3行目は全て青になっている感じです) それぞれのセル内で何%の行が青になっているかをD列に表示させたいのですが可能でしょうか? 行数は増えて行きます。 できればC列の色を変えた瞬間に判定したいのですが無理ならば他の方法でもかまいません。 よろしくお願いいたします。

  • エクセルVBA 条件にあうときセルを塗りつぶすには?

    エクセルVBA 条件にあうときセルを塗りつぶすには? エクセルVBAについて教えてください。 _________A 列 _________B 列_________C列_________D列 -------------------------------------------- 1行| 基準値_________ 5_____________1____________8 2行| りんご____________1_____________9____________0 3行| みかん___________12___________5____________3 4行| ぶどう____________15___________7____________8 5行| バナナ____________3_____________1____________4 上図のようにデータがあります。 (実物は列行共に膨大です。また条件を4つ以上つける予定なので条件付書式は使えません) 各列の基準値に対して、セルの増減が、0以下のときに黄色に、5から8のとき大きくなるときに赤、9以上のときに青にセルの色を塗りつぶしたいです。 どのようにすればよいでしょうか? B列の場合、基準値が5です。 B2のセルの場合、基準値5と1(B2セル)の増減は-4です。 増減が0以下のときは黄色に、増減が5から8のときは赤に、増減が9以上のときに青にするので、このときは黄色に塗りつぶします。 B3のセルの場合、基準値5と12(B3セル)の増減は7です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 B4のセルの場合、基準値5と15(B4セル)の増減は10です。 増減が9以上のとき青色に塗りつぶすので、このセルは青色に塗りつぶします。 C2のセルの場合は、C列の基準値は1(C1セル)です。 基準値1と9(C2のセル)の増減は8です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 よろしくお願いいたします。

  • VBA 色付きのセルを、隣接セルに値で貼り付けたい

    Excel365です。 A列に、100行ぐらいデータが入っています。 ところどころ、黄で塗りつぶされており、色は「黄」のみです。 A列内で、「黄」で塗りつぶしされているセルがあった場合、B列に、値として貼り付けたいです。 例の画像だと、 A2、A4のデータが、それぞれB2、B4に値として貼り付けたいです。

  • 色の付いたセルを数える

    すでに入力してある表から色の付いたセルを 色ごとにカウントしたいと思っています。 出来たらマクロは使わず、関数で処理したいんです。 他のところを見てもマクロを使う回答はあったのですが、 関数で処理しているものが見つからず、質問させて頂くことにしました。 表は次のようになっています。  …C      D      E      F        G … 4 田中   性別   出欠    a        小林… 5 山田   性別   出欠    b        鈴木… 6 佐藤   性別   出欠    c        岡 …  (名前)   (性別)   (出欠)  (選択記号)  (名前) C~FがG以降繰り返されます。 また行も30行以上あります。 セルに色が付くのはFの選択記号の列で、 入力されている文字等に関係なく、色付けされます。 複雑で分かりにくいかも知れませんが、 教えて頂けると助かります。 宜しくお願いします。

専門家に質問してみよう