質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

1523閲覧

Excelで前期比較を簡単に行うには?

manman

総合スコア233

0グッド

1クリップ

投稿2015/02/17 12:21

編集2015/02/17 12:41

A1に今期計数、
B1に前期計数が埋まっており、
C1で今期計数-前期計数、
D1で比率
(百分率で求め、小数点第3位以下切り捨てし、符号はC1と一致させる。
また、エラーのときは-と表記させる。)
を求めるのに、
C1に=A1-B1、
D1に=IF(ISERROR(ROUNDDOWN(C1/B1*SIGN(B1)100,2)),"-",ROUNDDOWN(C1/B1SIGN(B1)*100,2))
という数式をいれたのですが、
もう少しD1の数式をシンプルにするにはどうすればよろしいのでしょうか?

具体例)
200 300 -100 -33.33
200 -300 500 166.66
200 0 200 -

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

その式って、式を考えたくないとき、眠かったり、思考停止の時には、書きがちですよねぇ。
作業列に、エラーが出てしまって良い場合は、その考え方を作業列に適用すればよいのですけど。
⇒検証しやすいのは、作業列を使って(別シートで下処理を行っても良いのですし)、
エラーが出る物は出す。その上で、判っているから、処置をして~~~。

現在の形を優先(&作業列で、エラー表示しない)
⇒少数位の切捨てをしようがしまいが、エラーは出る。
SIGNと、定数演算は、エラー発生の主原因ではないので。
=IF(ISERROR(C1/B1),"-",ROUNDDOWN(C1/B1*SIGN(B1)100,2))
位で如何?

この式で、エラーの発生する、主原因は、division by zero なので、
前程条件に、EXCELで扱える数値の範囲 とすると、分母が0以外であれば計算できるので。
⇒=IF(ISERROR(1/B1),"-",ROUNDDOWN(C1/B1
SIGN(B1)100,2))
=IF(SUM(B1),ROUNDDOWN(C1/B1
SIGN(B1)100,2),"-")
=IF(N(B1),ROUNDDOWN(C1/B1
SIGN(B1)100,2),"-")
=IF(B1,ROUNDDOWN(C1/B1
SIGN(B1)*100,2),"-")

B1,C1 などに文字、数値に見える文字が入る可能性がある場合は、別途考慮で、考えてみてください。

投稿2015/02/17 14:36

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manman

2015/02/17 22:14

回答ありがとうございます。 エラー発生の主原因が何かを考えれば短くできるということですね。 さて、今(A1,B1) として、(-,-),(200,-)または(-,200)の場合も考えたいので、 C1に=IF(ISERROR(A1-B1),"-",A1-B1) D1に=IF(ISERROR(C1/B1),"-",ROUNDDOWN(C1/B1*SIGN(B1)*100,2)) という数式をいれることにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問