• ベストアンサー

エクセルの関数になると思いますが。。。

下記の表について質問させてください。 表(1)のデータがあります。この表(1)のデータからC3部分のみ赤字に変えた時に C5の合計値が¥20,000引かれた¥50,000にする関数はありますでしょうか? 尚、N3の合計値は¥295,000のままで表示したいのですが。 ちなみにマクロの方が簡単なのでしょうか? なにせエクセル初心者なので。

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

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

ユーザー定義関数を使ってみます。 標準モジュールに下記コードを入力してください。 ---------- Function ex_sum(集計範囲 As Range) Dim rng As Range Dim s As Double Application.Volatile s = 0 For Each rng In 集計範囲 If rng.Font.ColorIndex <> 3 Then s = s + rng.Value End If Next ex_sum = s End Function ---------- これでex_sum()という関数が使えます。 使い方はSum()関数とほぼ同じですが、赤い文字の数値は集計しません。 なお、文字の色を黒→赤(その逆も)に変えただけでは再計算されません。 どこかのセルを編集状態にしてリターンキーを押す等してください。

xx_m_o_c_a_xx
質問者

お礼

ご回答有難う御座います。 VBAの標準モジュールの内容まで詳しく御教授して頂き大変感謝しております。早速、このコードを入力して取り組んでみたいと思っております。 なにせエクセル初心者になりますので、またこちらのサイトにてお聞きする事もあるかと思いますので、その時は宜しくお願い致します。

その他の回答 (3)

  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.3

要するに「セルの色が赤なら、その数値は計算から除外する」という ことでいいんですね。だったら姑息な手段ですが・・・。 まず、セルの書式設定で、「書式」を「ユーザー定義」にして、該当の セルを以下のように設定してください。 ¥#,##0;-¥#,##0;;[赤]@ この状態で、問題のセルの入力を、普通に「2000」と入力するのではなく ’¥2,000 (見やすくするために全角にしてありますが、実際は半角で入力ください) と入力します。 更に、このままでは「左詰め」で表示されてしまいますので、セルを選択 して「右詰め」を指定してください。これで出来上がりです。 上記の書式設定は「文字入力は赤で表示する」という設定で、 「’¥2,000」は「¥2,000」という文字列を入力するということです。 文字列なら合計計算から除外されますので、「赤字なら計算除外」と 言う結果になります。 あくまで「姑息な手段」ですので、「そういう設定をしてますよ」と欄外など に書いておかないと、後でトンデモない結果が出てくることがありますよ。

xx_m_o_c_a_xx
質問者

お礼

ご回答有難う御座います。 「姑息な手段」・・・に、しても出来るもんなんですね? 今回は「姑息な手段」は控えておきます^^; 後々、困る要因にも繋がりそうなので。

  • yosifuji20
  • ベストアンサー率43% (2675/6115)
回答No.2

通常の関数では書式を条件にセルの答えを変えることはできません。 (逆にセルの内容でセルの色を変えることはできます。条件付き書式がその機能です) ただしマクロのVBAを使えば、セル書式の色がが赤になった時という条件ではA,赤でなあい場合はBというような関数を作ることは可能です。 その場合でも合計のSUM関数はあくまで結果の答えを合計するだけですから、合計欄にもC3の色が赤とその他という条件で合計を変える関数を作る必要があります。 考え方としてはこの通りですが、VBAでもちょっと入門編を超えるレベルかなと思いますが。

xx_m_o_c_a_xx
質問者

お礼

ご回答有難う御座います。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

赤字に変える、というのは「金額をマイナスにする」という意味ではなくて、文字通り「文字の色を赤くする」という意味でしょうか?

xx_m_o_c_a_xx
質問者

補足

ご質問ありがとうございます。その通りです。マイナスではなくて、文字色を変える事によって「計算させない」って事がしたいです。どうか御教授お願い致します。

関連するQ&A

専門家に質問してみよう