2017-05-04 18 views
0

Excelで参照されたセルのアドレスを別の数式で使用できるようにする方法はありますか?Excel:1つの数式で参照されているアドレスを取得し、別の数式で使用する

私はB1 = Address!A4という内容の別のセルを参照しています。別のセルでは、B1に含まれるセル参照を取得し、それを使用して、参照されているセルに関連するセルの値を取得します。私は、セルのアドレスを検索したくない!A4検索する範囲に複数の一致が含まれる可能性があるため。私はセルへの参照が必要です。

これを行う方法はありますか?

例えば:細胞の

行は値が含まA1 = "123 E 400 S"、B1 = "123"、C1 = "400"
セルは、参照が含まれていますこれらの細胞のいずれかに:G8 = B1細胞中のSO

G8値が "123" が表示されています。 は、私は、セルF8で、私はその後、A1で取得するためにオフセットすることができますB1への「ポインタ」またはインデックスとしてG8で参照を使用します何かを配置します。

私はこのF8 = OFFSET(CELL( "内容"、G8)、0、-1)の値 "123 E 400 S" が表示される原因になるやりたいです。残念ながら、これは動作しません、私は#REFを得る!エラー。

これはINDEX、VLOOKUP、MATCHなどの候補のように思えるかもしれませんが、見る範囲のセルを定義しようとしません。変化する可能性があります。そして、たとえそれを定義しようとしても、範囲内に潜在的な検索文字列 "123"が重複する可能性があります。

私は既に知っているリファレンスを使用して、そのセルに行き、そのセルに関連して作業できるはずです。

アイデア?助けてくれてありがとう。

+2

私はあなたが '間接'の後だと思います。 –

+2

OFFSET()?それ以上の情報なしで答えるのは難しいです。私たちの視覚的な学習者のために、オリジナルの投稿にいくつかのテストデータと期待される出力を含めてください。 –

+0

トニー、あなたの質問に情報を追加してくれてありがとう、私の答えは役に立たなかったのですか?あなたが求めていることを達成するようです... – Wolfie

答えて

2

編集:より簡単方法

どこかのセルのセルアドレスを持つことが容易になり、かつB1とC1 INDIRECTから両方の細胞を使用し、その後、あなたが余分に必要としないかもしれません以下に説明する機能!

indirect


VBA方法:ユーザー定義関数

あなたはマクロ有効.xlsmとしてブックを保存することができます場合は、あなたが式を取得するには、ユーザー定義関数を使用することができます、セルアドレスを抽出する。これをワークブックのVBAエディタのモジュールに追加します(Alt + F11、Insert> Module)。

Function GetFormula(rng As Range) As String 
    GetFormula = rng.Formula 
End Function 

使用例、C1に式を注意=GetFormulaですが、表示される値は、B1の数式です:

get function

次にあなたがセルの数式RIGHTを使用するか、またはそれを行うことができますいずれか直接別の機能を持つVBAで。 VBAでそれを行うことの利点は、あなたが行う構文解析がより明確になることです。あなたはRegExpを使うことができます。

Function GetEndRange(rng As Range) As String 
    Dim str As String 
    str = rng.Formula 
    ' Get the characters to the right of an exclamation point 
    ' Assumes formula ended in an address, could do more complicated parsing here 
    str = Right(str, Len(str) - InStr(str, "!")) 
    GetEndRange = str 
End Function 

用途:

end range

今、あなたはオフセットセルにアクセスするために、セルの数式(またはより複雑なマクロ)を使用することができます。ここでは、それを行うためのセルの数式方法です:

=OFFSET(INDIRECT("Address!" & GetEndRange(B1),TRUE),1,0) 
' Evaluated as: 
' =OFFSET(INDIRECT("Address!A4",TRUE),1,0) 
' =OFFSET(Address!$A$4,1,0) 
' =Address!$A$5 
関連する問題