Many times I need to get a value from multiple sheets (to some crazy workbooks – it can be up to 200 sheets). The problem is all these 200 sheets have the same structure even their name and it is crazy for me go to link one by one though these 200 sheets. Is there any way to create a user-defined function, something like
Function GetValue(sheetName As String, cellAddress As String) As Variant GetSheetValue = Range(sheetName & "!" & cellAddress).Value End Function
which works well until I switch between Excel files. The function starts to return #Value which my feeling is that it tries to search for SheetA,B,C,D @A1 on other open workbooks.
Try below code
Function GetValue(sheetName As String, cellAddress As String) As Variant GetSheetValue = ThisWorkbook.Sheets(sheetName).Range(cellAddress) End Function
This can be solved in VBA fairly easily. A For…Next loop would go through all 200, worksheets, returning the values. For example:
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
… this will loop through all worksheets in your active workbook, find the value in myrange on each sheet, and stores this value in the worksheet “worksheet_to_store_values_on” in row “my_index” of column A. You can adapt to your particular situation.