8

私は正と負の数でExcelの成長率を計算しようとしています。

This Year's value: 2434
Last Year's value: -2

私が使用している式は次のとおりです。

(This_Year - Last_Year) / Last_Year

=(2434 - -2) / -2

問題は、私が否定的な結果を得るということです。おおよその成長数を計算できますか?もしそうなら、どのように?

4

19 に答える 19

16

両方が正になるように、数値スペースを上にシフトしてみてください。

任意の2つの正または負の数の間のゲインを計算するには、一方の足をマグニチュード成長の世界に、もう一方の足をボリューム成長の世界に保持する必要があります。結果のゲインをどのように表示するかに応じて、どちらかの側に寄りかかることができ、それぞれの選択に結果があります。

ストラテジー

  1. 古い数と新しい数に対して正の数を生成するシフト方程式を作成します。

  2. 古い番号と新しい番号にカスタムシフトを追加して、new_shiftedとold_shiftedを取得します。

  3. (new_shifted --old_shifted)/ old_shifted)の計算を行って、ゲインを取得します。

例えば:

old -> new
-50 -> 30               //Calculate a shift like (2*(50 + 30)) = 160

shifted_old -> shifted_new
110         ->  190

= (new-old)/old
= (190-110)/110 = 72.73%

シフト機能の選び方

たとえば、各数値に10000を追加するなど、シフト関数が数値を上にシフトしすぎると、常に小さな増加/減少が発生します。しかし、シフトが両方の数値をプラスの領域に入れるのに十分な大きさである場合、エッジケースの成長/減少に大きな変動が生じます。特定のアプリケーションに適したシフト機能をダイヤルする必要があります。この問題に対する完全に正しい解決策はありません、あなたは甘いもので苦いものをとらなければなりません。

これをExcelに追加して、数値とゲインがどのように変化するかを確認します。

                           shift function
old new  abs_old  abs_new  2*abs(old)+abs(new)   shiftedold  shiftednew    gain
-50  30  50          30          160                110         190        72.73%
-50  40  50          40          180                130         220        69.23%
10   20  10          20          60                 70          80         14.29%
10   30  10          30          80                 90          110        22.22%
1    10  1           10          22                 23          32         39.13%
1    20  1           20          42                 43          62         44.19%
-10  10  10          10          40                 30          50         66.67%
-10  20  10          20          60                 50          80         60.00%
1    100  1          100         202                203         302        48.77%
1    1000 1          1000        2002               2003        3002       49.88%

ゲインのパーセンテージは、数値の大きさの影響を受けます。上記の数値は悪い例であり、プリミティブシフト関数の結果です。

どの生き物が最も生産的な利益を得るかを自問する必要があります。

Evaluate the growth of critters A, B, C, and D:
A used to consume 0.01 units of energy and now consumes 10 units.
B used to consume 500 units and now consumes 700 units.
C used to consume -50 units (Producing units!) and now consumes 30 units.
D used to consume -0.01 units (Producing) and now consumes -30 units (producing).

いくつかの方法で、各生き物が独自の方法で最大の栽培者であるという議論をすることができます。Bが最高の栽培者であると言う人もいれば、Dがより大きな利益であると言う人もいます。どちらが良いかは自分で決める必要があります。

問題は、私たちが成長としてラベル付けするもののこの直感的な感覚を、人間が「素晴らしい成長」と「平凡な成長」と見なす傾向があることを示す連続関数にマッピングできるかということです。

不思議な成長

次に、クリッターBはクリッターDよりもはるかに困難な時間を過ごした可能性があることを考慮に入れる必要があります。クリッターDは、将来、他のクリッターよりもはるかに多くの可能性を秘めている可能性があります。アドバンテージがありました!opportunity、、、およびの成長difficultyをどのように測定しますか?将来を予測できるようにするには、「主要なホームラン」と「生産性の大幅な向上」を構成するものを直感的に理解する必要があります。velocityacceleration

関数の1次および2次導関数は、「成長の速度」と「成長の加速」を提供します。微積分のそれらについて学びなさい、それらは非常に重要です。

どちらがもっと成長していますか?毎分成長を加速している生き物、または成長を減速している生き物?高速と低速、および高/低変化率はどうですか?成長の機会を使い果たすという概念についてはどうでしょうか。費用便益分析と機会を利用する能力/無力。敵対的なシステム(あなたの成功は他の人の失敗から来る)とゼロサムゲームはどうですか?

指数関数的成長、ライナー成長があります。そして持続不可能な成長。費用便益分析とデータへの曲線の適合。世界は私たちが想像できるよりはるかに奇妙です。データに完全な線をプロットしても、ブラックスワン効果のために次に来るデータポイントはわかりません。私はすべての人間が成長についてのこの講義を聞くことを提案します、コロラド大学ボルダー校は成長、それが何であるか、それが何でないか、そして人間がそれを完全に誤解する方法について素晴らしい話をしました。 http://www.youtube.com/watch?v=u5iFESMAU58

温水の温度に線を合わせます。曲線に合わせたと思ったら、黒い白鳥が発生し、水が沸騰します。この効果は私たちの宇宙全体で起こり、あなたの原始関数(新旧)/旧はあなたを助けません。

これが私のニーズに合ったきちんとしたパッケージで上記の概念のほとんどを達成するJavaコードです:

生き物の成長-(生き物は「電波」、「カブトムシ」、「油温」、「ストックオプション」など、何でもかまいません)。

public double evaluate_critter_growth_return_a_gain_percentage(
        double old_value, double new_value) throws Exception{
    
    double abs_old = Math.abs(old_value);
    double abs_new = Math.abs(new_value);

    //This is your shift function, fool around with it and see how
    //It changes.  Have a full battery of unit tests though before you fiddle.
    double biggest_absolute_value = (Math.max(abs_old, abs_new)+1)*2;
    
    if (new_value <= 0 || old_value <= 0){
        new_value = new_value + (biggest_absolute_value+1);
        old_value = old_value + (biggest_absolute_value+1);
    }
    
    if (old_value == 0 || new_value == 0){
        old_value+=1;
        new_value+=1;
    }
    
    if (old_value <= 0)
        throw new Exception("This should never happen.");
    
    if (new_value <= 0)
        throw new Exception("This should never happen.");
    
    
    return (new_value - old_value) / old_value;
    
    
}

結果

それは、人間が生き物の成長に対して本能的な感覚を持っているような、ある種の振る舞いをします。私たちの銀行口座が-9000から-3000になると、それは口座が1000から2000になるときよりも良い成長であると言えます。

1->2     (1.0)  should be bigger than   1->1 (0.0)
1->2     (1.0)  should be smaller than  1->4 (3.0)
0->1     (0.2)  should be smaller than  1->3 (2.0)
-5-> -3  (0.25) should be smaller than -5->-1 (0.5)
-5->1    (0.75) should be smaller than -5->5 (1.25)
100->200 (1.0)  should be the same as  10->20 (1.0)
-10->1   (0.84) should be smaller than -20->1 (0.91)
-10->10  (1.53) should be smaller than -20->20 (1.73)
-200->200 should not be in outer space (say more than 500%):(1.97)
handle edge case 1-> -4: (-0.41)
1-> -4:  (-0.42) should be bigger than 1-> -9:(-0.45)
于 2013-08-23T05:45:16.637 に答える
7

最も簡単な解決策は次のとおりです。

=(NEW/OLD-1)*SIGN(OLD)

このSIGN()関数は-1、値が負の1場合と値が正の場合に発生します。したがって、これを掛けると、前の値が負の場合、条件付きで結果が反転します。

于 2016-10-20T12:28:05.497 に答える
6

ベースが0未満で、現在の数値が0より大きい場合、成長率は意味のある測定値ではありません。

Yr 1 Yr 2%変更(絶対値ベース)
-1 10%1100
-10 10%200

上記の計算は、この測定値の弱点を示しています。基準年が負で、現在が正の場合、結果はN/Aです。

于 2013-06-14T19:51:32.987 に答える
3

この計算は厳密な数学的観点では意味がないことは事実ですが、財務データをチェックしている場合でも、それは有用な指標です。式は次のようになります。

if(lastyear>0,(thisyear/lastyear-1),((thisyear+abs(lastyear)/abs(lastyear))

簡単な数値で式を経験的に検証してみましょう。

thisyear=50 lastyear=25 growth=100%理にかなっている

thisyear=25 lastyear=50 growth=-50%理にかなっている

thisyear=-25 lastyear=25 growth=-200%理にかなっている

thisyear=50 lastyear=-25 growth=300%理にかなっている

thisyear=-50 lastyear=-25 growth=-100%理にかなっている

thisyear=-25 lastyear=-50 growth=50%理にかなっている

繰り返しになりますが、数学的には正しくない場合がありますが、意味のある数値が必要な場合(グラフやその他の数式にプラグインする場合)、特にN / Aを使用すると、後続のすべての計算が失敗する可能性がある場合は、N/Aの代わりになります。

于 2016-04-10T05:32:05.860 に答える
1

あなたは負の結果を得るはずです-あなたは負の数で割っています。昨年がマイナスだった場合、マイナスの成長が見られました。で割ることでこの異常を回避できますAbs(Last Year)

于 2012-09-20T14:42:53.193 に答える
1

シナリオを描きましょう。
差出人:-303から183まで、変化率はどのくらいですか?

-303、-100%0 183、60.396%303、100%

| _________________ |||||||||||||||||||||||| ________ |

(183 --- 303)/ | -303 | * 100 = 160.396%
合計変化率は約160%です

注:値がどれほど負であっても、-100%として扱われます。

于 2014-10-02T08:51:48.263 に答える
1

この問題を解決する最良の方法は、式を使用して勾配を計算することです。

(y1-y2 / x1-x2)

* x1を最初の瞬間として定義すると、値は「C4 = 1」になります。x2を最初の瞬間として定義すると、値は「C5=2」になります。

正しい成長率を得るには、次の順序に従います。

=(((B4-B5)/(C4-C5))/ ABS(B4))* 100

完璧に動作します!

于 2016-08-04T00:30:21.673 に答える
0

最も簡単な方法は私が使用する方法です。

=(ThisYear - LastYear)/(ABS(LastYear))

ただし、特定の状況でのみ機能します。特定の値を使用すると、結果が反転します。

于 2014-01-30T16:04:45.127 に答える
0

両方の正の数の結果として通常の成長に匹敵する成長値が必要な場合は、両方を正にシフトすることは実際には意味がありません。2つの正の数の成長を見たいのであれば、シフトしたくありません。

ただし、2つの負の数の成長を逆にすることは理にかなっています。-1から-2は、数学的には100%の成長ですが、それは何か前向きなもののように感じられ、実際、結果は減少になります。

したがって、次の関数があり、2つの負の数の成長を反転させることができます。

setGrowth(Quantity q1, Quantity q2, boolean fromPositiveBase) {
if (q1.getValue().equals(q2.getValue()))
    setValue(0.0F);
else if (q1.getValue() <= 0 ^ q2.getValue() <= 0) // growth makes no sense
    setNaN();
else if (q1.getValue() < 0 && q2.getValue() < 0) // both negative, option to invert
    setValue((q2.getValue() - q1.getValue()) / ((fromPositiveBase? -1: 1) * q1.getValue()));
else // both positive
    setValue((q2.getValue() - q1.getValue()) / q1.getValue());
}
于 2014-09-13T10:07:01.797 に答える
0

これらの質問は、「どうすればよいですか」という質問に答えています。「私がすべきか」という質問を考慮せずに。正の値と負の値をとる変数の値の変化は、統計的に言えば、かなり意味がありません。「シフト」の提案は、一部の変数(たとえば、ケルビンスケールまたは問題を処理するためにシフトできる温度)ではうまく機能する可能性がありますが、否定性が方向に正確な影響を与える他の変数では非常に不十分です。たとえば、純利益または純損失。以前の投稿が示唆しているように、損失(負の所得)での運用はこの文脈では正確な意味を持ち、-50から30への移動は110から190への移動とまったく同じではありません。これらのパーセンテージの変化は、おそらく「NA」として報告されるはずです。

于 2015-02-26T16:55:08.890 に答える
0

分周器を絶対数に変更するだけです。

        A          B           C         D
1    25,000      50,000      75,000     200%

2   (25,000)     50,000      25,000     200%

の式D2は次のとおりです。=(C2-A2)/ABS(A2)すべての正の行と比較すると、結果は同じです(絶対ベース数が同じ場合)。式にが含まれていない場合ABS、結果は-200%になります。

フランコ

于 2015-07-01T11:30:28.647 に答える
0

このコードを使用します:

=IFERROR((This Year/Last Year)-1,IF(AND(D2=0,E2=0),0,1))

このコードの最初の部分iferrorは、負の値または0の値がある場合にN/Aの問題を取り除きます。これは、e2とd2の値を調べて、両方が0でないことを確認することによって行われます。両方が0の場合、0%になります。セルの1つだけが0の場合、0の値がどこにあるかに応じて、100%または-100%になります。このコードの2番目の部分(e2 / d2)-1は、(今年-昨年)/昨年と同じコードです

写真の例はこちらをクリックしてください

于 2015-11-03T14:15:21.440 に答える
0

今日は答えを探していましたが、これでうまくいくと思います...

= IF(C5 = 0、B5 / 1、IF(C5 <0、(B5 + ABS(C5)/ 1)、IF(C5> 0、(B5 / C5)-1)))

C5 =昨年、B5=今年

セルには3つのIFステートメントがあります。

昨年が0の場合、今年を1で割った値

昨年が0未満の場合、今年+昨年の絶対値を1で割った値

昨年が0より大きい場合、今年を昨年から1を引いた値で割った値

于 2015-11-06T21:27:16.747 に答える
0

次の式を使用します。

= 100%+(2年目/ 1年目)

論理は、1年目にネガティブの100%(したがって、最初の100%)を回復し、超過分は1年目に対する比率になるというものです。

于 2016-03-30T14:20:29.300 に答える
0

数式は次のようになります。

=(thisYear+IF(LastYear<0,ABS(LastYear),0))/ABS(LastYear)-100%

<0の場合のIF値が、実際の差を生成するためにThisyear値に追加されます。

> 0の場合、LastYear値は0です

チェックされたさまざまなシナリオで動作するようです

于 2016-08-24T07:41:55.703 に答える
0

短いもの:

=IF(D2>C2, ABS((D2-C2)/C2), -1*ABS((D2-C2)/C2)) 

または紛らわしいもの(私の最初の試み):

=IF(D2>C2, IF(C2>0, (D2-C2)/C2, (D2-C2)/ABS(C2)), IF(OR(D2>0,C2>0), (D2-C2)/C2, IF(AND(D2<0, C2<0), (D2-C2)/ABS(C2), 0)))

D2は今年、C2は昨年です。

于 2017-08-10T14:21:26.690 に答える
0

この記事では、(b --a)/ ABS(a)の式が理にかなっている理由について詳しく説明します。最初は直感に反しますが、基礎となる算術を試してみると、意味がわかり始めます。最終的にはそれに慣れるにつれて、パーセンテージの見方が変わります。

于 2021-01-16T01:16:15.810 に答える
0

目標は、増加率を取得することです。アイデアは次のとおりです。最初に絶対増加の値を計算します。次に、絶対増加の値が、今年と昨年の両方の値に追加されます。次に、新しい値に基づいて増加率を計算します。例えば:

LastYear | ThisYear | AbsoluteIncrease | LastYear01 | ThisYear01 | Rate
  -10    | 20       |  30 = (10+20)    | 20=(-10+30)| 50=(20+30) | 2.5=50/20    
  -20    | 20       |  40 = (20+20)    | 20=(-20+40)| 60=(20+40) | 3=60/2
于 2022-01-12T04:16:27.307 に答える
-1
=(This Year - Last Year) / (ABS(Last Year))

これは、今年と昨年が常に正の数である場合にのみ確実に機能します。

たとえば、last_year = -50 this_year=-1です。実際に数値が大幅に改善された場合、-100%の成長が得られます。

于 2013-05-02T16:04:00.117 に答える