我有一个工作簿,我在单元格D3中有以下公式。
“= VLOOKUP($ C3,'[NIGHT ROTA.xlsx] 15 '!$ A $ 5:$ I $ 32,D $ 1,0)”
源工作簿有52张,当我想搜索某张工作表时,我必须手动更改工作表名称,然后运行下面的代码,使用工作表更改将其复制到工作簿中的单元格中。
有没有办法让sheetname作为我在工作簿中的单元格中具有的变量,或者是从下拉列表中选择的?我知道我可以使用INDIRECT但不想打开源工作簿。
Sub WeekChange()
Range("D3").Select
Selection.Copy
Range("D3:I26").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub
答案 0 :(得分:1)
您可以将工作表名称放在一个下拉单元格中,例如E1
(或任何您选择的)并捕获此单元格中的更改:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("E1").Address Then
Range("D3:I26").Formula = "=VLOOKUP($C3,'[NIGHT ROTA.xlsx]" & Target.Value & "'!$A$5:$I$32,D$1,0)"
End If
End Sub
要填充E1
中的下拉框,您最终可以在工作簿打开时设置它,但由于您不想打开它(我猜您有一些原因),您可能需要手动填充E1
的验证。