0

次のようなユーザー保持データがあります。

signup_date days    retention       
2/24/13 0   1
2/23/13 0   1
2/23/13 1   0.4855
2/22/13 0   1
2/22/13 1   0.4727
2/22/13 2   0.3647
2/21/13 0   1
2/21/13 1   0.5135
2/21/13 2   0.3879
2/21/13 3   0.3463
2/20/13 0   1
2/20/13 1   0.5402
2/20/13 2   0.4166
2/20/13 3   0.3615
2/20/13 4   0.3203
2/19/13 0   1
2/19/13 1   0.5317
2/19/13 2   0.4348
2/19/13 3   0.366
2/19/13 4   0.3077

2番目の列(「日」)は、サインアップ日から経過した日数を表し、保持はその日とsignup_dateに基づいています(保持は時間の経過とともに変化する可能性があるため)。今後は予測を行う必要がありますが、残念ながら(プログラムでこれを実行したいので)、上司はExcelで予測を行いたいと考えています。そのため、Lookup()関数を使用して、特定のサインアップ日から経過した「日数」に一致する保持列の最新の値を見つけようとしています。

とにかく、それはすべて質問の前置きです。それは、私が式を入力した場合の今のところです。

=lookup(1,B:B,C:C)

ここで、B:Bは「日数」であり、C:Cは保持です。必ずしも、データセットの最初の(つまり最新の)保持値を返すとは限りません。たとえば、この場合、セルは0.4855である必要がありますが、数式によって0.4727(2番目の「days = 1」行)が得られる場合があります。これを行うように構成する方法はありますか、それとも私が必要とすることを行う別の機能がありますか?

4

1 に答える 1

2

を使用する代わりにLOOKUPVLOOKUP関数を使用します。データが順序どおりでないことを指定する別のパラメーターがあります。

=VLOOKUP(1,$B:$C,2,0)

B:Bこれにより、範囲の最初の列に「1」が見つかった範囲の 2 列目のエントリが返されます。最後に を忘れない0でください。これは Excel に行ごとに検索するように指示するためです (LOOKUPパラメーターを省略したり、バイナリ検索を行ったりする場合とは異なります)。

Alternative: VLOOKUPは単純な式であり、そのような状況のデフォルトです。より柔軟な方法は、次を使用することINDEX/MATCHです。

=INDEX($C:$C,MATCH(1,$B:$B,0))

これはまったく同じことを行いますが、もう少し柔軟性があり、「ルックアップデータの2番目の列」を含める必要はありません...

チッ!

于 2013-02-25T20:50:10.667 に答える