28

VBAを使用せずに、あるセルが別のセルの数式をテキストとして取得するにはどうすればよいですか?この質問はすでに何度も行われていることがわかります。答えは常にVBAでカスタム関数を作成することです。

しかし、2006年に作成された、非VBAソリューションを見つけたと主張する投稿を見つけましたが、その投稿で提供されているリンクはすでに壊れています。

4

5 に答える 5

25

=FormulaText(Reference)トリックを行います

于 2014-05-09T00:39:48.237 に答える
17

VBA を使わずにこれを行う良い方法があります。XL4 マクロを使用します (これらはマクロですが、尋ねられたように VBA ではありません)。

図 1 を参照すると、セル A2:A4 には通常の数式が含まれています。

ここに画像の説明を入力

  1. [式] -> [名前の定義] に移動し、セル A6:B8 に表示される情報を使用して、2 つの名前付き範囲を定義しました (図 2 を参照)。

    ここに画像の説明を入力

  2. セル B2 に入力し=FormulaAsTextます。これにより、セル A2 の数式がテキストとして取得されます。

    説明: 指定された範囲FormulaAsTextは を使用し=GET.CELL(info_type,reference)ます。この場合、ìnfo_type = 6式を取得し、式reference = OFFSET(INDIRECT("RC",FALSE),0,-1)が使用されているセルから 0 行、-1 列オフセットされたセルを使用します。

  3. B2 をコピーして B3:B4 に貼り付けます。これにより、A3:A4 に数式が表示されます。セル A4 は、ワークシート関数がCELL( ではなくGET.CELL) 数式ではなく、値のみを取得することを示しています。

  4. FormulaAsText現在からの固定オフセット (0,-1) にあるセルから数式を取得するため、ワークシート自体から読み取ったオフセット (rows,cols) を使用する別の範囲を定義しFormulaAsText2ました。セル D2:D4 には が含まれています=FormulaAsText2。したがって、セル D2 はセル B3 ( =OffSET(D2,1,-2)) の内容を示します。これはFormulaAsTextです。セル D3:D4 は、セル自体の内容を示しています。これにより、ある程度の柔軟性が追加されます。YMMV。

PS1: エッセンスは http://www.mrexcel.com/forum/excel-questions/20611-info-only-get-cell-arguments.htmlから取得されました

PS2: Tim Williams がコメントで「古い XLM GET.FORMULA()」と言及しました。この回答は関連している可能性があります (これは を使用しているため、同じではありませんGET.CELL())。

PS3: http://dmcritchie.mvps.org/excel/formula.htmなどで簡単な VBA ソリューションが提供されてい ます


EDIT :この素晴らしい答えを補完するために、ワークシート機能はExcel 2013以降FormulaTextで利用できます

于 2014-01-07T13:48:22.390 に答える
-6

できません。これは、平均的な Excel ユーザーが意図しないものを誤って取得することを防ぐための設計上の選択である可能性が最も高いです。

あなたが読んでいることは正しいです - UDF を書くことはあなたが望む解決策です。

于 2012-02-03T01:32:44.680 に答える