我有一个工作簿,其中我在单元格中具有以下公式。
" = vlookup($ c3,'[night rota.xlsx] 15 '!$ 5:$ 5:$ i $ 32,d $ 1,0)"
源工作簿有52张纸,当我想搜索某个表格时,我必须手动更改表名称,然后运行下面的代码以使用工作表更改在我的工作簿中的单元格中复制它。
是否有一种方法可以将SheetName作为我在工作簿中的单元格中拥有的变量,或者从下拉菜单中选择的变量?我知道我可以间接使用,但不想打开源工作簿。
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
您可以将表格名称放在下拉单元格中,例如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
手动。