2011-08-19 11 views
9

私はそれほど単純にすべき問題がありますが、私はそれの周りに頭を上げていません。私は店舗の料金表を印刷していますが、今年は部品番号を1つではなく5つのワークシートに分割しました。参照Excelワークシートを動的に

ユーザーがpricetagを印刷したいときは、C10に=を入力し、ワークシート「価格表」をクリックして、必要な部品番号に移動します。

C10について得られた式は:=料金表B40

E10式があるので、E10は、部品番号についての詳細情報を含まなければならない:= VLOOKUP(C10、料金表B:N、2、FALSE B40 = New_Items

は、どのように私はトンのでE10のための式を書くことができます!)

しかし、今、新しいワークシートで、彼女は、その場合にはC10の結果の式はワークシート「New_Items」を選択かもしれませんそれはC10と同じワークシートを参照しています。私はE10 = VLOOKUP(!C10、料金表 B:N、2、FALSE)必要

が自動的* = VLOOKUP(C10、New_ItemsになるためにB:N、2、FALSE )*

意味がありますか? Excelが別のセルの参照に基づいてワークシートの参照を変更することができますか?

TIA!

答えて

12

はいこれは間接()を使用して行うことができます。シートの名前をどうにかする必要があるため、少し時間がかかることがあります。

=VLOOKUP(C10, INDIRECT(Concatenate(cell-with-sheet-name, "!B:N"),TRUE) ,2,FALSE) 
+0

"cell-with-sheet-name"の実際の値を決定するために、他のセルで余分な文字列連結を実行する必要があります。また、すべてのルックアップワークシートを可能な限りシンプルにすることで、これを簡単に行うことができます。 – smaclell

+0

"...シートの名前をどうにかする必要があります。"はい、私がする必要があるのは、C10からシート名を抽出する方法と、同じシートをE10式で参照する方法です。間接的に私を助けることができますか?また、すべてのワークシートのデータは同様に構造化されていますので、この障害を過ぎると私は自宅にいません。 – Thinkwell

+0

vbaが有効な場合、単純関数はCell.Formulaを使用してシート名を解析して返します。 UDFのhttp://www.ozgrid.com/VBA/ExcelIsFormula.htmのクイックスタート – Eddy

0

vbaを使用できますか?

もしそうなら、この単純なUDFを試してみてください

Function MyLookup(ref As Range, Offset as Long) As Variant 
    MyLookup = Range(ref.Formula).Offset(0, Offset) 
End Function 

セルE10 =MyLookup(C10, 1)

0

あなたはVBA UDF

Function GetShtNm(rng As Range) As String 
    Application.Volatile 

    If InStr(1, rng.Formula, "!") = 0 Then 
     GetShtNm = vbNullString 
    Else 
     GetShtNm = Mid$(rng.Formula, 2, InStr(1, rng.Formula, "!") - 2) 
    End If 
End Function 

を作成し、これは渦が提供する間接的である式で使用することができます。

このUDFを使用すると、VLOOKUP INDIRECT機能内でシート名の変更を動的に追跡できます。

関連する問題