2

非常に大規模な次の Excel セットアップがありますが、ここでは単純化されたセットアップを示します。

Site1 X-Given   Y-Given Site2   X-New-Given Y-Interpolated
A     10        400     A       25      550
A     20        500     A       25      550
A     30        600     A       26      560
A     40        700     B       27      570
A     50        800     B       30      600
B     10        400     B       15      450
B     20        500     B       25      550
B     30        600     B       30      600

私が達成しようとしているのは、各 Y-Interpolated をその特定のサイトに基づいて補間するだけで、交差しないようにすることです。したがって、サイト A はサイト A のみを補間し、サイト B も同様に補間します。

次の構文を持つ補間Excelアドインを使用しています: =interpolate(x_array,y_array,x_given)

助けてくれてありがとう!

4

2 に答える 2

1

このワークシート関数の代替手段を試すことができます... のデータでA1:E9、これを入力しF2て記入してください:

=FORECAST(E2,IF(MMULT(ROW(B$2:B$9)-LOOKUP(0,(B$2:B$9>=E2)/(A$2:A$9=D2),ROW(B$2:B$9))-0.5,1)^2<1,C$2:C$9),B$2:B$9)

更新:CTRL + SHIFT + ENTERで入力されたわずかに短い代替手段を次に示します

=PERCENTILE(IF(A$2:A$9=D2,C$2:C$9),PERCENTRANK(IF(A$2:A$9=D2,B$2:B$9),E2,20))

これは、変数間に正の関係があることを前提としており、両方の境界で値を返します。

バックグラウンド

これにワークシート関数を使用する場合、X に隣接する 2 つの点 (X1,Y1) と (X2,Y2) を見つけるのが明らかな方法です。次に、次を使用して Y を計算します。

Y = Y1 + (X - X1) * (Y2 - Y1) / (X2 - X1)

問題は、これが 6 つの INDEX/MATCH の組み合わせと、指定されたサイトにデータを制限するための 6 つの条件を含む長い式になることです。これにより、他のオプションを探すようになります...

1 . 最初の式は複雑に見えますが、同じサイトの隣接する 2 つのポイントに基づいて直線近似を適用しているだけです。上記の 3 行目の数式を評価すると (数式の各部分を強調表示して F9 キーを押すと)、次の結果が得られます。

=FORECAST(26,{FALSE;500;600;FALSE;...},{10;20;30;40;...})

FORECAST は数値以外のデータを無視するため、結果は 2 番目と 3 番目の引数に {500,600} と {20,30} を使用した場合と同じになります。数式の他の部分で F9 を使用して、さらに分解することができます。詳細はお任せします。(MMULT(...,1) の部分は、引数を配列に変更するだけなので、配列を入力せずに式を入力できます。)

2 . 2 番目の式のほうが簡単です。最初に、Excel ではパーセンタイルが線形補間によって計算され、IF 部分は数値データを指定されたサイトに制限しているだけであることに注意してください。データが増加していると仮定すると、x 範囲のルックアップ値と一致する PERCENTILE 式の k 値を見つけ、その k 値で y 範囲の値を返すことができます。問題の例:

26  =PERCENTILE({10,20,30,40,50},0.4)
560 =PERCENTILE({400,500,600,700,800},0.4)

0.4 の値を計算するには、PERCENTILE の逆である PERCENTRANK を使用できます。

0.4 =PERCENTRANK({10,20,30,40,50},26)
0.4 =PERCENTRANK({400,500,600,700,800},560)

上記の式は、これら 2 つの関数を組み合わせたものです。最後の引数は、完全な精度を得るために 20 に設定されています (Excel は内部的に約 15 ~ 17 桁の精度で値を格納します)。

于 2012-08-16T07:20:24.343 に答える
0

使用しているツールは Excel 用の .xll アドインに基づいているため、コードを変更したり、interpolate条件を追加できるカスタム バージョンを作成したりすることはできません。

代わりに、データをフィルター処理してから、フィルター処理されたデータセットに対してカスタム関数を実行する必要があります。

于 2012-08-16T01:01:04.930 に答える