VBAを使用せずに、あるセルが別のセルの数式をテキストとして取得するにはどうすればよいですか?この質問はすでに何度も行われていることがわかります。答えは常にVBAでカスタム関数を作成することです。
しかし、2006年に作成された、非VBAソリューションを見つけたと主張する投稿を見つけましたが、その投稿で提供されているリンクはすでに壊れています。
VBAを使用せずに、あるセルが別のセルの数式をテキストとして取得するにはどうすればよいですか?この質問はすでに何度も行われていることがわかります。答えは常にVBAでカスタム関数を作成することです。
しかし、2006年に作成された、非VBAソリューションを見つけたと主張する投稿を見つけましたが、その投稿で提供されているリンクはすでに壊れています。
=FormulaText(Reference)
トリックを行います
VBA を使わずにこれを行う良い方法があります。XL4 マクロを使用します (これらはマクロですが、尋ねられたように VBA ではありません)。
図 1 を参照すると、セル A2:A4 には通常の数式が含まれています。
[式] -> [名前の定義] に移動し、セル A6:B8 に表示される情報を使用して、2 つの名前付き範囲を定義しました (図 2 を参照)。
セル B2 に入力し=FormulaAsText
ます。これにより、セル A2 の数式がテキストとして取得されます。
説明: 指定された範囲FormulaAsText
は を使用し=GET.CELL(info_type,reference)
ます。この場合、ìnfo_type = 6
式を取得し、式reference = OFFSET(INDIRECT("RC",FALSE),0,-1)
が使用されているセルから 0 行、-1 列オフセットされたセルを使用します。
B2 をコピーして B3:B4 に貼り付けます。これにより、A3:A4 に数式が表示されます。セル A4 は、ワークシート関数がCELL
( ではなくGET.CELL
) 数式ではなく、値のみを取得することを示しています。
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
で利用できます。
できません。これは、平均的な Excel ユーザーが意図しないものを誤って取得することを防ぐための設計上の選択である可能性が最も高いです。
あなたが読んでいることは正しいです - UDF を書くことはあなたが望む解決策です。