2013-10-11 117 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

相关问题