很多时候我需要从多张表中获取一个值(对于一些疯狂的工作簿 - 最多可以达到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。
答案 0 :(得分:2)
尝试以下代码
Function GetValue(sheetName As String, cellAddress As String) As Variant
GetSheetValue = ThisWorkbook.Sheets(sheetName).Range(cellAddress)
End Function
答案 1 :(得分:1)
这可以很容易地在VBA中解决。 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 中的值,并将此值存储在工作表“worksheet_to_store_values_on”列的“my_index”行中答:您可以适应您的特定情况。