• ベストアンサー

エクセル表で数字の色別合計は可能ですか

エクセル2000を使用しています。 エクセル表で1ヶ月の支払い明細を作成したとします、 下段に支払い済み合計    支払い予定合計 を作成したとして 明細中の数字を支払い予定は赤色(最初は全て赤色) 支払い済を黒色へ変更とした場合 それぞれの合計が色が変わる毎に 自動的に変わっていく このようなことが出来ないでしょうか

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

状況から察すると、VBAを使わないと、実用には耐えられないでしょう。 ユーザー定義関数を使う方法です。 使い方は、=CSUM( 範囲 , 色番号 ) です。 ちなみに 色番号は、黒=1、赤=3 です。 範囲内のフォント色や、値を変更した場合は、<Enter>等で確定した時点で 再計算されます。 参考まで、色番号(カラーインデックス)を調べる GetCIndx 関数も付け加えます。 使い方は、セルA1を調べる色で塗り潰し、B1に =GetCIndx(A1) を入力すると その色番号が表示されます。 この値がマイナスになった場合は、色は「自動」に 設定されていますから、通常では色番号の引数に 1 を使用します。 一応、VBAコードの設定方法を書いておきますが、ご存知でしたら読み飛ばしてください。 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を  「中」にして[OK]します。 これで設定完了です。 CSum と GetCIndx 関数が使用できます。 Function CSum(R As Range, idx) As Double Dim Rng As Range Dim Cnt As Double Application.Volatile For Each Rng In R   If IsNumeric(Rng.Value) Then     If Rng.Font.ColorIndex = idx Then       Cnt = Cnt + Rng.Value     ElseIf idx = 1 And Rng.Font.ColorIndex = _       xlAutomatic Then       Cnt = Cnt + Rng.Value     End If   End If Next Rng CSum = Cnt Function GetCIndx(Rng As Range) If Rng.Count > 1 Then   GetCIndx = vbNullString   Exit Function End If GetCIndx = Rng.Interior.ColorIndex End Function

その他の回答 (6)

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

作業列(どこでも良いがB列とします)を使います。 あとで列を非表示にする手もある。 (例データ)A1:A6に 123 23(赤フォント) 345 56(赤フォント) 67 67 (準備)VBEの標準モジュールにコピー貼りつけ。 たった4行。 Function cl(a) n = a.Font.ColorIndex cl = n End Function (関数式) B1に=cl(A1)と入れる。 B2以下B6まで複写。 B列は -4105 3 -4105 3 -4105 -4105 (合計を出す関数式) 赤字分=SUMIF(B1:B6,3,A1)赤はコード3だから。 黒字分=SUMIF(B1:B6,-4105,A1)黒は色なしの-4105だから。 (結果) 赤字分79 黒字分602

ace4402
質問者

お礼

ありがとうございました

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.6

> 1.回答のコピーなどの後関数を入力したら > End Functionがないとエラー画面とコピーした画面が表示されたので、指示 > どうりにしたら動きました。これはこのとうりでよろしいでしょうか あらまぁ~。 ごめんなさい。 回答を貼り付けるときに1行、少なく貼り付けました。 CSum = Cnt の下に End Function の1行を挿入してください。 > 2.このエクセルのファイルを媒体で他のPCにコピーした場合使用できますか > よろしくお願いします。 勿論使用出来ます。 但し、そのユーザーがセキュリティレベルを高にしていたり、 無効で開いた場合は、動作しません。 そのときは、先にも書いたように メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を 「中」にして[OK]します。

ace4402
質問者

お礼

かさねがさねありがとうございました。 これですごく管理しやすくなりました。

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.5

色を使わない代案です。 A列 項目 B列 金額 C列 状態コード(支払済み=1,支払い予定=2) D列 支払済み金額 E列 支払予定金額 のようにしてA,B,C列に入力します。D,E列は、 D10を =if(C10=1,B10,"") E10を =if(C10=2,B10,"") のようして自動的に値が入るようにします。

ace4402
質問者

お礼

ありがとうございました 今後の参考にさせていただきます

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

#3 ですが、使い方の具体例です。 > 使い方は、=CSUM( 範囲 , 色番号 ) です。 例えば、A1:A10 の範囲でフォント色が、「赤」の数字の値を合計する場合は、  =CSUM(A1:A10,3) 同じく、黒の数字は、 =CSUM(A1:A10,1) で求められます。 その他、関数の使い方は、一般の関数と同じです。 例えば、今、範囲内の赤色の数字であったものを黒に変更して<Enter>を押した時点で、 双方の値が加減されます。 たぶん、こういう機能を期待しているのではないでしょうか。

ace4402
質問者

補足

まさに期待どうりの機能です。ありがとうございます。 おそれいいりますがこちらVBA初心者につき下記の2点補足して頂けないでしょうか。申し訳ありません 1.回答のコピーなどの後関数を入力したら End Functionがないとエラー画面とコピーした画面が表示されたので、指示どうりにしたら動きました。これはこのとうりでよろしいでしょうか 2.このエクセルのファイルを媒体で他のPCにコピーした場合使用できますか よろしくお願いします

  • shiga_3
  • ベストアンサー率64% (978/1526)
回答No.2

作業列を使う方法ですが、 A1:A10に金額が入っている場合に、 B1:B10を作業列として、支払済みになった時にここに適当な文字(例えば「*」)を入れたらA列の金額が赤から黒に変わって、その合計がA11に、残りの支払い予定合計がA12に表示される というのではいかがでしょうか。 具体的には 1)A1:A10を範囲選択して、書式→条件付き書式で ・「数式が」「=B1<>"*"」で書式→フォントの色を「赤」 ・「数式が」「=B1="*"」で書式→フォントの色を「黒」 としてOK 2)A11に =SUMIF(B1:B10,"=*",A1:A10) A12に =SUMIF(B1:B10,"<>*",A1:A10) と入力 となります。

ace4402
質問者

お礼

早速の回答ありがとうございます

  • fever
  • ベストアンサー率43% (32/73)
回答No.1

1つの案ですが、支払い予定の金額をマイナス表示にして、セルの書式設定で負の数の表示形式を赤色(マイナスなし)に設定されては如何でしょう。 合計は、SUMIF関数を使用して、プラス側(支払い済み)とマイナス側(支払い予定)で合計を出します。 但し、マイナス側は、『*(-1)』にして、値を負から正に直します。

ace4402
質問者

お礼

早速回答ありがとうございます。 このような考え方もありですね。 今後参考にさせていただきます。

関連するQ&A

  • エクセル表で合計が指定数字になるように四捨五入

    エクセル表で、製品払い出し表を作成しております。(エクセル2007) A製品が10現場に出庫したとして、その合計が6,400になるようにしたいのですが、単価が割り切れない数字の為に、一つ一つの現場で調整して合わせるようにしているのですが、大変手間です。 例 15キロ入り/¥6,400の品  1キロ¥427 1現場   3キロ   1,281 2      5      2,135 3      4      1,708 4      1       427 5      2       854 上記例ですと、そのままの合計が¥6,405になり-¥5ほど調整しないといけません。 それを自動的に-(マイナス)してくれる関数などありませんでしょうか? わかりにくい文かもしれませんが、宜しくお願いします。

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

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

  • エクセルのオートサムについて

    エクセルのオートサムについて質問があります。 エクセルの表の中に黒、赤、青、黄色など色をかえてそれぞれ数字を入力していった場合、 (すべてバラバラの行)、各色ごとの合計を出すような機能はあるでしょうか?  つまり、色を認識して、黒の文字の合計はいくら、青で記入した文字の合計はいくら、 といった出し方ができないかということです。 どうぞよろしくおねがいします。

  • ホームページにExcelの表を貼り付けるには?

    ホームページビルダー8でHPを作成していますが、Excelで作成した表の罫線の色が変わって貼り付けられてしまいます。Excelの方では白の罫線なのですが、貼り付けると黒に変わります。また数字や文字を入れていないセルは罫線ごと消えてしまいます。どうしたらいいのでしょうか?回答お待ちしております。

  • 表からの合計

    お世話になります、集計についてお教えください。 上段のような表があります。そしてこれを下段のような数字を合計した表に組み替えたいと思います。 この下段の表の黄色い部分に入れる数式を考えています。 上段の表に合計を示す行と列を挿入すればsumifを活用することで出来るかと思うのですが、できれば上段の表は生データとして触らないようにしたいのです。 また、実際のデータはかなりの行と列の数となっており、構成要素も多岐にわたるので手作業を加える相対参照などは避けたいと思っています。 加えて、今後の活用の点からもピボットなどの機能ではなく、関数を組み合わせた数式で処理したいと思っています。 どのようにすればよいかお教えくだされば幸いです。 A A B B あ 1 2 3 4 あ 5 6 7 8 い 9 10 11 12 い 13 14 15 16 い 17 18 19 20 A B あ い

  • エクセルの数字や文字列を黒以外の色に変更できない

    黒色で作成したエクセルの数表のなかのある数字や文字列を例えば赤色に変更した後にそのシートを保存しようとすると、「問題が発生したため、Microsoft Excel を終了します。ご不便をおかけして申し訳ありません」と言う警告が表示され、エクセルは終了してしまいます。終了したシートを開いてみると赤色に変更したはずの文字列の色は元の黒色のままになっています。結局は数字や文字列の色を変更することができません。なお、以前はこのような問題はなく、またOSはWinXP3、エクセルは2002年版です。 次の様な原因が候補として考えられますが、どうなんでしょうか?原因と対策についてアドバイスをお願いいたします: (1)Windows 及び Microsoft 自動アップデイトを常時実行している (2)最近になってOSを XP2 から XP3 にアップした (3)Excel 機能に何らかの不具合が生じている 例えば、エクセルを入れ替えて見るとか?・・・

  • エクセルの入力について

    仕事でエクセルで既に入力された表計算のシートのデータ(数字等)の修正を行っています。しかし、電話がかかってきたり席を立ったりすると、どこまで上書きして訂正したのか分からなくなり、いつも、書き直したところを、そのつど赤とか青とかデータの字の色を変更しています。そして、シート1枚の訂正が終わった時点で(この時点では元データから修正したところが色が変わっている。)全体を黒に戻すといったことを繰り返しています。 いつも、新たに数字を入れなおしてリターンキーを押せば自動的に色が変わる(黒だったのがそこだけ赤とか緑とか)になるような、なんかいい方法がないものか、周りに聞いても誰もわからないようです。 そういうコマンドがあれば大変助かるのですが、教えてください。

  • エクセルの色数字の集計

    エクセル2003です。 列をKからOまで結合していて、そこに黒数字と赤数字を入力してます。 行は27から49で、50に黒数字の集計 51に赤数字の集計 したいと考えてます。 結合してても、色数字ごとの集計は可能でしょうか? その場合、関数は何を使えばいいのでしょうか? 初心者なので、分かりやすく説明していただけると助かります。

  • エクセルで数字を入力すると色が変わる

    エクセルで数字を入力すると色が自動的に変わるように するにはどうしたらいいですか? 例えば、マスに1と入力すれば、赤色に自動的になり、 2と入力すれば、自動的に黄色になるには、どうすればいいのでしょうか?

  • エクセルで条件に合わせて数字を合計

    エクセルの表にて、 セルに”○”が入っている場合は2、”×”が入っている場合は1で、その結果を合計したいのですが(例:○が3個・×が2個入ったセルがあれば、合計は8というふうに) 入力用と合計用に列を分けて、合計用にIF関数を使って数字を代入し合計するという方法しか思いつきません。VBAなど高度な技術を持ちませんので、やはりこの方法がベストになるのでしょうか? 列を増やさずに出来る方法があればご教授下さい。

専門家に質問してみよう