0

Excel で「1 期間」の財務モデルを作成しています。つまり、数式が各列で一貫しているモデルであるため、必要に応じてコピー/貼り付け/拡張できます。

モデルの仮定を別のシートに分割しています。たとえば、という名前のセルがmonthly_salesあります。これは、私が毎月追加する新規顧客の数です。数式は次のようになります。

前提シート 1.0

      A             B                  
1 | Monthly sales | 6                 |

予測シート 1.0

     A               B     C                   D                   E                  
1 |               |     | August 2009       | September 2009    | October 2009
2 | # Customers   |     | =B2+monthly_sales | =C2+monthly_sales | =D2+monthly_sales

したがって、8 月には 6 人の顧客がいます。9 月には 12 人の顧客。10月は18名。ここまでは順調ですね。しかし、私の最初の顧客は、より多くの開発リソースを必要としますよね? もう少し制限を加えた方がいいです。

前提シート 2.0

      A                       B                  
1 | Monthly sales           | 6                 |
2 | Early customers         | 3                 |
3 | Early dev cycle, months | 2                 |

英語: 最初の 3 人の顧客は、それぞれ 2 か月の開発期間がかかります。8 月から 11 月まで、1 人の顧客がいます。12 月に 2 番目の顧客を追加し、4 月に 3 番目の顧客を追加します。2010 年 8 月までに、私は を通過しearly_customers、その後は月に 6 人ずつ成長し始めることができます。

VBA でこれを行う方法を知っています。前の月をチェックするユーザー定義関数を作成し、# Customers数式を次のように変更できます。

=B2+min(max_customers_this_month(),monthly_sales)

しかし、この概念を適切な Excel 式で宣言的に表現する方法があると思います。ある?

4

1 に答える 1

1

もっと簡潔な方法があるかもしれませんが、ここに解決策があります。B2 に 1 を入力し、C2 に次を入力します (次の列にコピーします)。

=IF(
    B2 > Early_customers,
    B2 + Monthly_sales,
    IF(
       OR(
          C1 - $B1 < Early_dev_cycle,
          OFFSET(B2, 0, MAX(-Early_dev_cycle + 1, $B1 - B1)) <> B2 
         ),
       B2,
       B2 + IF(
               B2 < Early_customers,
               1,
               Monthly_sales
              )
      )
   )

このソリューションでは、行 1 に日付ではなく月の数字が入力されていることを前提としています。日付を使用するには、$B1 を含む OR 句の 2 つの減算に、単純な減算よりも洗練されたものを使用する必要があります。

于 2009-08-05T19:58:31.440 に答える