VBAを使用せずに、1つのセルが別のセルの数式をテキストとして取得する方法この質問はすでに何度も聞かれており、答えは常にVBAでカスタム関数を作成することです。
しかし、私は 2006年に作成された投稿 を見つけました。これは非VBAソリューションを発見したと主張していますが、その投稿で提供されているリンクは既に壊れています。
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)のセルから数式を取得するため、ワークシート自体から読み取ったオフセット(行、列)を使用する別の範囲_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:ティムウィリアムズはコメントで「古いXLM GET.FORMULA()
」と言及しました。この回答はおそらく関連しています(これはGET.CELL()
を使用しているため、同じではありません)。
PS3:単純なVBAソリューションが提供されています。たとえば、 http://dmcritchie.mvps.org/Excel/formula.htm
[〜#〜] edit [〜#〜]: この素敵な答え 、ワークシート関数FormulaText
が利用可能です Excel 2013の場合 以降。
=FormulaText(Reference)
はトリックを行います ドキュメント
これを行う方法があります。私の例では、日付を示すテーブルがありました。日付はSheet!G91から取得されます。私のテーブルには、シート名を示す列もありました。テーブルにさらに2つの列を追加しました。 Gはアルファベットの7番目の文字であるため、最初の列にはcolumn(Sheet!g91)があり、これは数値7を返します。次に、ブック内の別のテーブルを使用して、数値を文字(G)に変換しました。追加した2番目の列で、数値91を返す数式row(Sheet!G91)を作成しました。注:行と列は揮発性の数式として表示される場合があり、ワークブックの計算ごとに再計算されます。
この投稿の冒頭で言及した日付セルの数式の内容を別の列に表示したかったのです。次の文字列関数を含めました(CONCATENATEも使用できます)。
「=&AJ9& "!」 &AM9&AN9
アンパサンドで区切られたアイテムは、つながれます(つまり、連結されます)。この例のAJ9にはシート名が含まれ、AM9には列の文字が含まれ、AN9には行番号が含まれます。
シート名とセル参照を反映するためにコンテンツを動的に更新する列ができました。私のワークブックセルの結果は
=シート!G91。
この提案は、数式のブロックを取得して新しいスプレッドシートに転送した後、それらを再び使用できるようにする場合に役立ちます。 ExcelsのFORMULATEXT関数は、数式を選択するのに最適ですが、使用できないテキスト文字列のままになります。それらを完全に機能する式として戻したい場合は、文字列文字を削除するためにそれぞれを個別に編集する必要がありますが、大きなブロックのショートカットを次に示します。テキストとして必要な数式がある場所に移動します(つまり、FORMULATEXTを使用した後-コピーと(値のみ)貼り付けを行った後)。次の手順では、変換するすべてのセルを強調表示してから、[テキストから列へ]メニューオプション(Excel 2016の{データ}バー)に移動します。 「区切り」を選択できますが、次の画面では、数式に表示されているマークの選択を解除してください。その後、「完了」。 Excelは、数式を含むセルを自動的に分析し、それらを再び機能させる必要があります。