• ベストアンサー

再質問、赤の数字の合計と緑の数字の合計

セルE2~E17とセルI2~I17の中に赤で書かれた数字と緑で書かれた数字があります。その中で、赤で書かれたセルの合計でなく、赤で書かれた数字の合計をセルK13に。また、緑で書かれたセルの合計でなく、緑で書かれた数字の合計をK15にに表示するにはどのようにすればよいですか。よろしくお願い致します。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.5

Simple is best! よって、次のようでも・・・・。 A +1 -2 +3 -4 _0 +6 実行結果は、 +=10 -=-6 Private Sub CommandButton1_Click()   Dim I As Integer   Dim V As Long   Dim P As Long   Dim N As Long   For I = 1 To 6     V = ActiveSheet.Cells(I, 1).Value     P = P + V * Abs(Sgn(V) > 0)     N = N + V * Abs(Sgn(V) < 0)   Next I   Debug.Print "+=" & P   Debug.Print "-=" & N End Sub

kkazumi
質問者

お礼

よいヒントをいただきやっとできました。 Sub 合計1_Click() Dim I As Integer Dim V As Long Dim P As Long Dim N As Long   For I = 2 To 17 V = ActiveSheet.Cells(I, 5).Value P = P + V * Abs(Sgn(V) > 0) N = N + V * Abs(Sgn(V) < 0) V = ActiveSheet.Cells(I, 9).Value P = P + V * Abs(Sgn(V) > 0) N = N + V * Abs(Sgn(V) < 0) Next I   Cells(13, 11).Value = P   Cells(15, 11).Value = N End Sub とてもシンプルにできてうれしく思います。 本当にありがとうございました。

その他の回答 (4)

noname#22222
noname#22222
回答No.4

今日から盆休みです。 よって、止むを得ず、回答そのものを示します。 A 1 2 3 4 5 6 RED=6 GREEN=15 この実行結果を得るには、以下のようなコードを書きます。 Private Sub CommandButton1_Click()   Const conRED = 3  ' RED   Const conGREEN = 50 ' 暗いGREEN   Dim I As Integer   Dim C As Integer   Dim V As Long   Dim R As Long   Dim G As Long   For I = 1 To 6     C = ActiveSheet.Cells(I, 1).Font.ColorIndex     V = ActiveSheet.Cells(I, 1).Value     R = R + V * Abs(C = conRED)     G = G + V * Abs(C = conGREEN)   Next I   Debug.Print "RED=" & R   Debug.Print "GREEN=" & G End Sub なお、 Private Sub CommandButton1_Click()   Const conRED = 3  ' RED   Const conGREEN = 50 ' 暗いGREEN   Dim I As Integer   Dim C As Integer   Dim V As Long   Dim R As Long   Dim G As Long   For I = 1 To 6     C = ActiveSheet.Cells(I, 1).Font.ColorIndex     V = ActiveSheet.Cells(I, 1).Value     If C = conRED Then       R = R + V     ElseIf C = conGREEN Then       G = G + V     End If   Next I   Debug.Print "RED=" & R   Debug.Print "GREEn=" & G End Sub と、論路式は If Then - Else 文でも書くことが出来ます。 *両者のコードが同じに見え出したら随分とコードの簡略化が進みます。 *なお、CBOOL(2=2)、ABS(CBOOL(2=2))、CBOOL(2=1)は、-1、1、0です。 *これを、利用して計算するのが論理式演算です。 *頑張って下さい。

kkazumi
質問者

補足

回答ありがとうございます。参考にしてできました。 Sub 合計_Click() Const conRED = 3 ' RED Const conGREEN = 50 ' 暗いGREEN Dim I As Integer Dim C As Integer Dim V As Long Dim R As Long Dim G As Long For I = 2 To 17 C = ActiveSheet.Cells(I, 5).Font.ColorIndex V = ActiveSheet.Cells(I, 5).Value R = R + V * Abs(C = conRED) G = G + V * Abs(C = conGREEN) C = ActiveSheet.Cells(I, 9).Font.ColorIndex V = ActiveSheet.Cells(I, 9).Value R = R + V * Abs(C = conRED) G = G + V * Abs(C = conGREEN) Next I Cells(13, 11).Value = R Cells(15, 11).Value = G End Sub しかし、セルのプロパティを [赤]+#,##0;[緑]-#,##0に設定すると計算できません。 [赤]+#,##0;[緑]-#,##0に設定して使用できるようにするにはどうすればいいのですか。 また、[赤]はConst conRED = 3 でOKですが    [緑]はConst conRED = ?? でわかりません よろしくお願い致します。

noname#22222
noname#22222
回答No.3

前回の回答は、ちと、意図していたコードではないのを誤って投稿しました。 訂正しておきます。 Private Sub CommandButton1_Click()   Const conRED = 3  ' RED   Const conGREEN = 50 ' 暗いGREEN   Dim I As Integer   Dim C As Integer   Dim R As Integer   Dim G As Integer   For I = 1 To 6     C = ActiveSheet.Cells(I, 1).Font.ColorIndex     R = R + ABS(C = conRED)     G = G + ABS(C = conGREEN)   Next I   MsgBox "RED=" & R   MsgBox "GREEn=" & G End Sub さて、A1に赤字で11と入力されている場合には、 ? ActiveSheet.Cells(1, 1).Font.ColorIndex 3 ? ActiveSheet.Cells(1, 1) 11 ? ActiveSheet.Cells(1, 1) * abs(ActiveSheet.Cells(1, 1).Font.ColorIndex = 3) 11 ? ActiveSheet.Cells(1, 1) * abs(ActiveSheet.Cells(1, 1).Font.ColorIndex = 64) 0 となることはイミディエイトウィンドウで確認することが可能です。 この場合、プログラミングコードに置換すれば、 ? C 3 ? V <ActiveSheet.Cells(1, 1)> 11 ? V * abs(C = conRED) 11 となることは、コードの対応関係から明らかです。 問題は、変数 V の宣言が Integr なのか Long なのかと言う問題が残るだけです。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

確かに前回のコードでは集計値は求まりませんが、大筋のロジックは示されて ます。あとは応用するだけですが、お礼欄に参考にしますとありますし、ご自 分でどのようなコードを書いてみたのですか? 補足していただければ、お力になれると思います。

kkazumi
質問者

補足

参考にしてできましたが。 Sub 合計_Click() Const conRED = 3 ' RED Const conGREEN = 50 ' 暗いGREEN Dim I As Integer Dim C As Integer Dim V As Long Dim R As Long Dim G As Long For I = 2 To 17 C = ActiveSheet.Cells(I, 5).Font.ColorIndex V = ActiveSheet.Cells(I, 5).Value R = R + V * Abs(C = conRED) G = G + V * Abs(C = conGREEN) C = ActiveSheet.Cells(I, 9).Font.ColorIndex V = ActiveSheet.Cells(I, 9).Value R = R + V * Abs(C = conRED) G = G + V * Abs(C = conGREEN) Next I Cells(13, 11).Value = R Cells(15, 11).Value = G End Sub しかし、セルのプロパティを [赤]+#,##0;[緑]-#,##0に設定すると計算できません。 [赤]+#,##0;[緑]-#,##0に設定して使用できるようにするにはどうすればいいのですか。 また、[赤]はConst conRED = 3 でOKですが    [緑]はConst conRED = ?? でわかりません よろしくお願い致します。

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.1

前回(http://okwave.jp/kotaeru.php3?q=2327459)の回答で、 「数を数えている」部分を「数値を合計する」に変えれば出来ます。

関連するQ&A

  • 赤の数字の合計と緑の数字の合計

    B2~I17の大きさの表があります。その中にランラムで赤で書かれた数字と緑で書かれた数字があります。赤の数字の合計をK13に緑の数字の合計をK15に表示するには、VBでどのようにすればよいですか。 よろしくお願い致します。

  • エクセル 1行1数字 たての合計計算

    エクセルの足し算についてです。 給与の計算をしないといけません。かなり面倒な作業です。 c1のセルに基本給とかき、横のD1からI1までの列にそれぞれ 1つずつ数字を入れます。通常でしたら1つのセルに給与の額を入力するのですが、 今回例えば、基本給155,000円でしたら、 D列に1,E列に5、F列に5といった具合です。 通常でしたら、1つのセルに155,000と数字をいれますが。 つづいてC2のセルに交通費と書き、額である6,000円を又、 D2に6、E3に0とちこみます。 最後にC3のセルに合計額と記入します。 ここで問題です。合計額の値をD3セル以降、1数字1セルごとに 入力するのですが、155,000+6,000の合計がくの161,000を D3に1、E3に6、F3に1、G3に0、といった具合に関数か何かを使い計算したいです。 例えばE3セルにE1+E2とタイプすると、11とでてしまいます。 11ではなく、1と表示し、D3に5ではなく6と表示したいです。 こんな計算したくないのですが、会社の作業でかえられません。 めんどくさくてごめんなさい。わかる方いれば教えていただけないでしょうか。

  • 行の連続数字を見つけて塗潰す方法

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に5×5のセルが4つあり、それぞれ1~99迄の数字がランダムに 重複有りで入っています。5×5のセルの中には行の連続数字(例:02 03) が入っています(1個も無い場合もあります)。 行の連続数字を見つけたら、その連続数字のセルを塗潰す方法が知りたいです。  ・2連続・・・黄色で塗潰す。   ・3連続・・・赤色で塗潰す。  ・4連続・・・青色で塗潰す。  ・5連続・・・緑色で塗潰す。  A B C D E F  G H I J K   1 01 07 09 11 22     03 10 20 30 31 2 04 12 14 15 23     01 02 07 09 22 3 07 13 17 18 25     04 11 12 14 15 4 06 16 21 24 26     02 13 17 18 23 5 08 19 27 28 29     06 16 24 25 26 6 7 05 09 11 26 30     03 06 13 22 27 8 04 10 15 19 24     03 14 25 28 29 9 01 14 20 25 29     05 11 18 20 21 10 07 18 21 23 31     07 08 16 23 31 11 02 08 12 16 17     02 03 12 17 27 【結果】 上記4つある5×5のセルには、10個の重複数字がありその数字のセルが塗潰されます。 (1)14 15  (2)17 18 (3)27 28 29 (4)30 31 (5)14 15 (6)24 25 26 (7)16 17 (8)28 29 (9)07 08 (10)02 03 【注意事項】  ・使用するエクセルは2010です。  ・セルの中の数字は2桁で表しています。(例:1ではなく01)  ・5×5のセルの位置は下記のとおりです。    1個目の5×5マス・・・A1~E5    2個目の5×5マス・・・G1~K5      3個目の5×5マス・・・A7~E11    4個目の5×5マス・・・G7~K11  ・回答はVBでも関数でも構いません。 以上、よろしくお願いします。

  • エクセルで偶数のみの数字の合計を計算

    LOT6のデータをエクセル2000に保存して有ります。 かなりの行数が有りますが、これを一括で偶数のみの合計数を計算したいのです。 例えば           B1 C1 D1 E1 F1 G1 H1  I1(偶数合計) 1回目(1行)  10  13  18  23  33  38  17   3 上記のように7個数字が有った時、「I1」のセルに計算式で偶数のみの合計数を3と成る数式を教えて頂きたくお願い致します。 奇数は偶数を計算した時、7-(偶数の合計数字)を引いて、後は計算式をドラッグしてコピーします。 以上宜しくお願い致します。

  • エクセルのマクロ 並んだ数字の幾つかを抜き出してその合計を計算させたいのですが・・

    エクセルのマクロ(VBA)について、教えてください。 セルのA1からA2・・・A1000までに「01,03,06,08,20,」のように5つの数字がカンマで区切られて入力されています。 1.この5つの数字をb.c.d.e.f.の1から1000のそれぞれのセルに配置するマクロ 2.この5つの数字の数字の合計をb1から1000のセルに表示させるマクロは難しいでしょうか? MID関数をひとつづつのセルに入れていたのですが、マクロでできれば効率が良いと思い手引書等で考えたのですがよく分からないのです。

  • 背景色赤のセルに表示された数字の集計方法

    昨日、http://okwave.jp/qa/q6535442.html で質問させて頂き解決致しました。 ありがとうございます。 その続きなのですが・・・ 背景色を変更したセルに表示されている1~50の数字を集計したいのです。 前回解決した内容を含めておさらいをしますと・・・ A~Jには、ランダムに1~50の数字1つづつ10個記入しています。 そこに記入した数字は、1ならKの、2ならLの・・・50ならBHのセル背景色が赤に変更出来るように K~BHを選択→条件付き書式→数式が→=COUNTIF($C1:$H1,COLUMN(A1)) と記入しました。 ですので、K~BHに背景色が赤のセルが10個必ずあります。 ちなみにK~BHには関数が入力されており、全て20くらいまでの数字が表示されております。 それが1000行あります。 ここからが質問なのですが、 背景色が変更されたセルに表示されている0~20くらいまでの各数字を集計したいのです。 0が表示されていて背景色が赤のセルの数をBIに表示 1が表示されている背景色が赤のセルの数をBJに表示 ・・・ 20が表示されている背景色が赤のセルの数をCCに表示 という感じにしたいのです。 背景色が変更されていない0~20もありますし、 1行に、例えば1が表示されている背景色赤のセルが0個の場合もあれば1個や2個・・・の場合もあります。 出来れば、1000行全てと、100行毎に集計が出来ればベストです。 それと背景色での集計が無理な場合は、 文字色を赤に変更し、それを集計する方法でも構いません。 マクロでも大丈夫ですが、 文法とかよくわからないのでそのまま使用出来るように書いて頂けると助かります。 (コピペで何度か使ったことはあります) 書き忘れましたが、当方のエクセルは2003,2007と両方持っています。 普段は2007を使用しております。 長くなってしまいましたが、どなたか宜しくお願い致します。

  • excelについての質問です。

    バラバラの数値が入力されたセルの羅列があり、その数字の中にさまざまな色が付いた数字があるとして、特定の色のみ(例えば赤なら赤い数字のみ)の合計を一つのセルに表示させることは可能でしょうか?

  • 【改造】検索値と一緒に出ている隣接数字を知るには2

    いつもお世話になっております。 どかたかご存知でしたら回答をお願いします。 ここ最近、同じ様な質問をしておりますが、よろしくお願いします。 ◆改造(付け加える)要件・・・下記以外は前回と同じです。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、  (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。【既存】  (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。【既存】  (3)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字が全て同じなら、青く塗り潰す。【既存】  (4)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字が1ヶ所を除いて全て同じなら、緑色で塗り潰す。【追加】 〇例題  A B C D E F G H I J K L M 1 01 11 16 26 31 40  08 15 21 25 30 35 2 02 03 06 17 27 41  01 11 26 28 31 36 3 04 09 12 19 22 42  02 03 06 16 17 37 4 05 13 14 23 29 43  04 09 12 22 27 38 5 07 10 18 20 24 27  05 13 19 23 29 39 6 7 04 13 16 30 31 33  05 08 20 22 26 37 8 02 15 17 24 29 34  01 03 07 18 19 38 9 01 03 07 19 25 35  04 12 14 16 25 39 10 11 12 14 21 27 36  10 11 21 23 27 40 11 06 09 10 23 28 37  06 08 09 20 28 41 複写数:01 ※最大1~43の数字が入る。 検索値:01 ※最大43個の数字が右に並ぶ。 〇結果  A1、H2、A9、H8:01が黄色で塗潰される。  A2、H3、A8   :02が赤色となる筈だが、3ヶ所で出ているので緑色で塗潰す。  B2、I3、B9、I8 :03が青色で塗潰される。   B1、I2、A10   :11が緑色で塗潰される。  〇青色、緑色で塗潰す説明  A1にある01の隣接数字は小さい順に、02、03、11  H2にある01の隣接数字は小さい順に、02、03、08、11、15  A9にある01の隣接数字は小さい順に、02、03、11、12、15  H8にある01の隣接数字は小さい順に、03、04、05、08、12  01が見つかった4か所全てに出現している隣接数字は03なので03を青色で塗潰す。  01が見つかった3か所全てに出現している隣接数字は02と11なので、  02と11を緑色で塗潰す。  ※02は本来、01の差:1のため赤色となるが、緑色の条件にも当てはまるため最終的に  緑色で塗潰す。(青色の条件に当てはまった場合も緑色の条件にも当てはまれば最終的に  緑色で塗潰す。)  逆に03を検索値とした場合は、  B2にある03接数字は小さい順に、01、02、04、06、09、11、12、16  I3にある03隣接数字は小さい順に、01、02、04、06、09、11、12、26  B9にある03隣接数字は小さい順に、01、02、07、11、12、14、15、17  I8にある0の隣接数字は小さい順に、01、04、05、07、08、12、14、20  03が見つかった4か所全てに出現している隣接数字は01、12なので、  01、12を青色で塗潰す。  03が見つかった3か所全てに出現している隣接数字は02、04、11、なので、  02、04、11を緑色で塗潰す。 ****2018/11/21の質問の内容**** 【質問】 例題の様に5×6マスが4つあり、その中を1~43の数字が重複有りで入っています。  1つ目の5×6マス:A1~F5  2つ目の5×6マス:H1~M5  3つ目の5×6マス:A7~F11  4つ目の5×6マス:H7~M11 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、上記4つの5×6のセルを1塊りとして下にコピーする   (最大:43)。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、   (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。   (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)     の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。 〇例題   A B C D E F  G H I J K L M  1 06 21 23 36 37 43  01 08 16 31 35 41 2 07 12 14 23 32 43  06 10 13 20 27 32 3 09 17 20 29 42 40  02 15 18 30 34 38 4 03 05 13 25 27 41  01 09 25 30 42 43 5 04 11 22 28 35 39  11 16 18 24 29 42 6 7 03 17 27 36 40 41  07 21 22 23 33 37 8 03 04 08 24 26 39  02 03 07 14 18 38 9 10 12 22 32 37 42  05 10 13 40 41 42 10 02 09 25 32 41 42  07 13 22 40 41 42 11 08 14 23 24 30 39  03 29 31 40 41 42 複写数:01 ※最大1~43の数字が入る。 検索値:41 ※最大43個の数字が右に並ぶ。 〇結果  M1:41が黄色で塗潰される。  E3、F3、F4 :40、41、42が赤色で塗潰される。  E7、F7   :40、41が赤色で塗潰される。   F9、E10、F10:41、42、42が赤色で塗潰される。   K9、L9、M9、K10、L10、M10、K11、L11、M11:40、41、42が赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。  ・複写数欄に入力できる数字は1~43迄の1つです。 以上、よろしくお願いします。

  • エクセルでひとつのセルに複数の数字があり合計を出す

    エクセルですが、教えて下さい ひとつの長いセルに   600  100  300 と数字 スペース 数字 スペースのパターンになっています、その合計1000を別のセルに出す方法はございますか? 同僚が手計算で出してくるのですが、必ず合計が違ってきて困っています。 どうぞ宜しくお願い致します

  • エクセルの数字の合計について

    エクセル2003を使っています。 数字の入ったセルを左クリックしながらドラッグしていくとそのセルに入っている数字の合計が 右端に出ますが、突如これがでなくなってしまいました。 元の状態にもどすにはどうすればよいでしょうか。

専門家に質問してみよう