2016-09-06 7 views
0

セルC1があります(C1 =平均(E1:E10))。 セルD1で、この範囲と他の範囲を複数回使用する必要があるため、範囲E1:E10を明示的に入力せずにD1 = STDEVP(E1:E10)を使用したいと考えています。他の関数で使用されているExcel再利用範囲

C1の影響を受ける範囲を取得/参照して別のセルの別の機能で使用する簡単な方法はありますか? D1 = STDEVP(AFFECTEDRANGE(C1))のようなものです。

おおよそ私が望むことを実行するINDIRECTという関数が見つかりましたが、私の目的のために追加の列が必要です。ワークシートをきれいにしてコンパクトに保つ​​のが好きなので、私は上記のような機能を好むでしょう。このような1ライナーは存在しますか?

+1

最も良い方法は間接的です。また、範囲を取得するためにFORMULATEXT()を解析することができますが、それでも間接的にそれをラップする必要があります。 –

答えて

0

解決済み:Jeepedの回答をthisの回答にマージして、必要なことを行うカスタムの再利用可能な関数を作成しました。

これは、すべてのセルの値として=AverageToStDev(CELL)を設定することで機能します。 CELLは、これを動作させるためにAVERAGE()関数を含む単一のセルでなければならないことに注意してください。

Function AverageToStDev(MyCell As Range) 
    Application.Volatile 
    AverageToStDev = Evaluate(Replace(MyCell.Formula, "AVERAGE", "STDEVP", vbTextCompare)) 
End Function 
1

ReplaceRange.Formula propertyで十分であるように思われる。

range("d1").formula = replace(range("c1").formula, "AVERAGE", "STDEVP", vbtextcompare) 

ワークシート内に留まり、VBAを避けたい場合は、名前付き範囲を使用します。

+0

ご協力いただきありがとうございます。私はあなたのコードを私の正確なニーズに合わせて調整しました –

関連する問題