我有一些已关闭的Excel工作簿,我愿意使用=INDEX(MATCH)
访问它而不打开它们。
不幸的是,我想间接地引用它们,因此基于我当前的表格。
E.g。 - 如果我在sheet
- > then file path
:
AAB
- > 'C:\Users\vityata\Desktop\[AAB]Test'!$A:E
BBC
- > 'C:\Users\vityata\Desktop\[BBC]Test'!$A:E
这似乎是一项微不足道的任务,但是做这样的事情的唯一选择似乎如下:
Indirect()
(但我不想打开工作表)INDIRECT.EXT
(但我不想要3.派对加载项)我在这里检查过类似的问题:How to referencing value in closed excel workbook by formula incl. variable sheetname?但是第一个解决方案实在太复杂了。
任何新想法或最佳做法?
更新 到目前为止,我已经用VBA实现了以下目标(尽管我希望有一个非VBA解决方案):
Option Explicit
Public Sub VlookupClosedWb(Optional strLookFor As String = "Erteilung Baugenehmigung", _
Optional strSheet As String = "APF", _
Optional lngColIndex As Long = 2)
Dim strRange As String
strRange = "'" & ThisWorkbook.Path & "\[" & strSheet & ".xlsx]" & "Monatsbericht'!$A:$E"
ActiveCell.Formula = "=VLOOKUP(""" & strLookFor & """," & strRange & "," & lngColIndex & ",0)"
End Sub
Public Function fVlookupClosedWb(Optional strLookFor As String = "Erteilung Baugenehmigung", _
Optional strSheet As String = "APF", _
Optional lngColIndex As Long = 2)
Dim strRange As String
strRange = "'" & ThisWorkbook.Path & "\[" & strSheet & ".xlsx]" & "Monatsbericht'!$A:$E"
fVlookupClosedWb = WorksheetFunction.VLookup(""" & strLookFor & """, " & strRange & ", " & lngColIndex & ", 0)
End Function
长话短说 - Sub按预期工作,提供了我想要的活跃单元格。该功能不起作用。任何想法如何使其工作?我认为它不起作用,因为我滥用了一点WorksheetFunction.VLookup
,但是我无法在不打开其他工作簿的情况下传递范围。想法?
答案 0 :(得分:0)
经过一些尝试后,我发现在封闭的Excel工作簿中使用某些公式的方法,而不是引用路径是使用Sumproduct()
function。
例如为: 如果你想使用Sumproduct()作为Sumifs()的替代品,这就是两种情况下的样子:
=SUMPRODUCT(((B2:B6=C2)*1)*(A2:A6=D2))
*SUMPRODUCT(((B8:B13=C8)*1)*(A8:A13=D8))
*SUMPRODUCT(((B16:B20=C16)*1)*(A16:A20=D16))