2013-10-11 154 views
1

很多時候我需要從多個工作表中獲取一個值(對於一些瘋狂的工作簿 - 它可以達到200張)。問題是,所有這200張紙都具有相同的結構,甚至連他們的名字,我也瘋狂地去連接這200張紙。有什麼辦法來創建用戶定義的函數,像從工作表名稱和單元格地址獲取值

=getValue(sheetName,cell address) 

我試圖

Function GetValue(sheetName As String, cellAddress As String) As Variant 
    GetSheetValue = Range(sheetName & "!" & cellAddress).Value 
End Function 

,直到我的Excel文件之間切換效果很好。該函數開始返回#Value,我的感覺是它試圖在其他打開的工作簿上搜索SheetA,B,C,D @ A1。

enter image description here

+0

如果要合併的所有圖紙,並進行主文件,然後它的價值來看待[RDB合併加載項(http://stackoverflow.com/questions/17030067/consolidating -worksheets-into-one/17030835#17030835) – Santosh

+0

謝謝,但不是真正的合併。我只需要從每張紙上獲得一個特定的值(1個單元格和1個單元格)。 – user2103670

回答

2

試試下面的代碼

Function GetValue(sheetName As String, cellAddress As String) As Variant 
    GetSheetValue = ThisWorkbook.Sheets(sheetName).Range(cellAddress) 
End Function 
+1

非常感謝 - 是的 - 這是我需要的 – user2103670

+0

@ user2103670歡迎:) – Santosh

1

這可以在VBA來解決相當容易。 A For ... Next循環會遍歷所有200個工作表,並返回值。例如:

my_index = 1 
For Each ws In Worksheets 
    If ws.Name <> worksheet_to_store_values_on Then 
    worksheet_to_store_values_on.Cells(my_index, 1).Value = _ 
    ws.Range(myrange).Value 
    my_index = my_index + 1 
    End If 
Next 

...通過在活動工作簿中所有工作表這將循環,發現myrange在每張紙上店行「my_index」的值,並在工作表「worksheet_to_store_values_on」這個值A列。您可以適應您的特定情況。

+0

我感謝您的幫助。你的代碼真的很有用,我將在不同的應用程序中使用它。 – user2103670

相關問題