2012-04-24 11 views
4

SUMのようなA1のセルに関数名があり、B1C1のようなデータがあるとします。 1つのセルに式を定義して、A1で定義されている式を呼び出し、B1C1をデータとして使用するように式を定義する方法はありますか?別のセルで定義された数式を評価する

だから、のようなもの:A1はそれで単語SUMが含まれているため
=A1(B1:C1)=SUM(B1:C1)に等しいはずです。

本質的には、Cのプリプロセッサマクロや関数ポインタのようなものかもしれません。

答えて

5

あなたはモジュール内でユーザー定義関数を作成することによって、それは、VBAを使用して行うことができます:

Public Function applyFunction(functionName As Range, argument As Range) As Variant 
    applyFunction = Evaluate(functionName & "(" & argument.Address & ")") 
End Function 

を使用すると、B1、B2、B3におけるA1でSUM、および1、2、3を入れた場合、=applyFunction(A1,B1:B3)が返されます6. =SUM(B1:B3)を呼び出すのと同じです。

EDIT

あなたが本当にVBAを使用したくない場合は、名前を作成することができます(エクセル2010で名前を定義し、私は考えてExcel 2003で名前を挿入):

  • 定義新しい名前(のはeval1を言わせて)で
  • は、地域を指し、A1はSUMとB1が含まれている=EVALUATE(A1&"(B1:B3)")を入力します。B3は、空白のセル内の数値
  • との範囲で、タイプ=eval1とし、結果を返す必要があります。

しかし、このアプローチはあまり柔軟性がありません。

+0

assyliasを非常に素晴らしいです!あなたはVBA機能でパンチに私を打つ:) –

+0

ありがとう! VBA関数を使用せずにこれを行う方法はありますか?私は可能ならばそれを避けることを意味してきました。 – 9a3eedi

+0

@ 9a3eedi私はそれを行う組み込み関数はないと思います。多分誰かがそうします。 VBAを使用したくない具体的な理由は何ですか? – assylias

1

代わりに式を使用する場合は、SUBTOTAL()関数を使用できます。しかし、それは少し限られています。

画像を確認してください。これは、小計の機能番号への参照を使用します。関数の名前を使用する場合は、vlookup関数を作成することでこれを拡張できますが、データ範囲内の隠し値を無視する正規関数numまたは101型の値を使用するかどうかを判断する方法も提供する必要があります。

詳細はこのリンクをチェックアウト:、 http://office.microsoft.com/en-us/excel-help/subtotal-function-HP010062463.aspx

enter image description here

+0

これがなぜ落とされたのか分かりません - それはOPの要件に応じて合理的なアプローチかもしれません。 – assylias

+0

私はなぜ私が下降投票したのか分かりません。私はそれが役に立つと思った。これは二回目のようなものです。私はもう何も投稿したくないです:P –

+1

誰かがこれが部分的な答えだと思うかもしれませんが、それは他の関数をカバーしていませんが、私はdownvote +に値するとは思わない+部分的に間違っていると本当に間違っているか改善されていれば、回答を削除することができます。投稿をして、downvoteが-2対upvote +10であることを忘れないでください) – assylias

関連する問題