我正在编写一个vlookup函数,我想引用另一个工作簿中的最后一个标签,而不是引用每天更改的标签名称。
要移至我拥有的工作簿的最后一个标签
SELECT V.N, D.A, D.B, D.C, D.D, D.E, D.F --I assume there are all from the Data table
FROM Data D
CROSS APPLY (VALUES(D.[Name])) V(N)
INNER JOIN User_Access UA ON V.N = UA.Name
WHERE UA.Channel = 'TEST';
是否可以在VLOOKUP中引用它? (将工作表保留在空白处)
Sheets(Sheets.Count).Select
答案 0 :(得分:0)
这只是我的头顶(未经测试),但是也许是这样的
Dim wbData as Workbook
Set wbData = Workbooks.Add("Unavista UTI Lookup December2019.xlsm")
ActiveWorkbook.Worksheets("Sheet1").Range("A1").Formula = "=VLOOKUP(RC[133],[" & wbData.Name & "]" & wbData.WorkSheets(wbData.WorkSheets.Count).Name & "!C4:C7,4,0)"
wbData.Close False
或者,使用.Open
方法:
Dim wbData as Workbook
Set wbData = Workbooks.Open(Filename:="Unavista UTI Lookup December2019.xlsm", ReadOnly:=True)
ActiveWorkbook.Worksheets("Sheet1").Range("A1").Formula = "=VLOOKUP(RC[133],[" & wbData.Name & "]" & wbData.WorkSheets(wbData.WorkSheets.Count).Name & "!C4:C7,4,0)"
wbData.Close False
根据需要调整Sheet1和A1
但是,您仍然需要在某种事件上触发此代码,这对我来说还不清楚。
答案 1 :(得分:0)
我所在的功能如下;
当前,我正在更改vlookup引用的工作表的日期。因此,下面显示了昨天的“ 12月9日”。今天在文件“ Unavista UTI Lookup December2019”中创建了新标签后,它将显示“ Dec 10”
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[133],'[Unavista UTI Lookup December2019.xlsm]Dec 9'!C4:C7,4,0)"
我想做的是找到一种方法,使代码自动将其更改为今天。与工作中的人交谈,我们尝试了以下方法
Dim DayValue As String
Dim FormulaString As String
DayValue = Format(Date, "mmm d")
Range("E2").Select
FormulaString = "=VLOOKUP(EH2,'[Unavista UTI Lookup December2019.xlsm]" & DayValue & "' !$D:$G,4,0)"
该公式未带回任何错误,但是不幸的是,查找没有做任何事情,只是带回了空单元格。
如果任何人都可以解决此问题,因为我尝试了很多事情,但仍然无法使其正常工作。
答案 2 :(得分:0)
我认为您正在使用像这样的一行应用公式:
Range("E2").Formula = FormulaString
但是,当我尝试该行时,由于您的行有一个多余的空白,它返回了一个错误,因为与另一个工作簿的链接的语法应为:
'[WorkbookName]WorksheetName'!Range
并且您的行有:
'[WorkbookName]WorksheetName' !Range
因此而不是:
FormulaString = "=VLOOKUP(EH2,'[Unavista UTI Lookup December2019.xlsm]" & DayValue & "' !$D:$G,4,0)"
使用此:
FormulaString = "=VLOOKUP(EH2,'[Unavista UTI Lookup December2019.xlsm]" & DayValue & "'!$D:$G,4,0)"
Range("E2").Formula = FormulaString
但是,为了简化程序的维护,我建议使用常量,请尝试以下程序:
Sub Formula_Today()
Const kFml As String = "= VLOOKUP( RC[133]," & _
"'[Unavista UTI Lookup December2019.xlsm]#TODAY'!C4:C7, 4, 0 )"
Dim sFml As String
sFml = Replace(kFml, "#TODAY", Format(Date, "mmm d"))
With ThisWorkbook.Worksheets("DATA")
.Range("E2:E10").FormulaR1C1 = sFml
End With
End Sub