2011-08-19 66 views
9

我有,應該是這麼簡單的一個問題,但我沒有得到我的頭周圍。我爲商店打印價格表,今年他們將零件號碼分成5個工作表,而不是一個。參考Excel工作表動態

當用戶想打印出一個價碼,她進入到= C10,單擊工作表「價目表」,並導航到她所需要的零件編號。

爲C10得到的式是:=價目表B40

E10必須包含關於部件編號的詳細信息,以便E10公式是:= VLOOKUP(C10,價格表B:!N,2,FALSE )

不過,現在新的工作表,她可能會選擇工作表「New_Items」在這種情況下爲C10所產生的計算公式爲:= New_Items B40

我怎麼能寫E10公式因此T它引用了與C10相同的工作表。

我需要E10 = VLOOKUP(C10,價目表 B:!N,2,FALSE)

自動成爲* = VLOOKUP(C10,New_Items B:!N,2,FALSE )*

這有意義嗎?這可以讓Excel根據另一個單元格的引用修改工作表引用嗎?

TIA!

回答

12

是的,你可以做到這一點使用INDIRECT(),因爲你需要以某種方式制定出表的名稱可能需要一些工作。

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

您可能需要在其他細胞執行額外的字符串連接,以確定「細胞與表名」的實際值。通過使所有查找工作表儘可能相似,這也可以變得更容易。 – smaclell

+0

「......需要以某種方式計算出工作表的名稱。」是的,我需要做的是弄清楚如何從C10中提取工作表名稱,並讓E10公式引用同一工作表。 INDIRECT可以幫助我嗎?另外,所有工作表中的數據都是相同的,所以一旦我超過這個障礙,我就無家可歸了。 – Thinkwell

+0

如果啓用了vba,一個簡單的函數可以使用Cell.Formula解析sheetname並返回它。快速瞭解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函數內表名稱的變化。