我正在使用三张。工作表起始页的日期为A4到lastrow。我有基金趋势表,日期从A11到最后一行。根据开始页面表中的日期列表,vlookup在基金趋势表中搜索日期。基金趋势表中的搜索表范围为范围(A11:C11)至lastrow 。当找到日期时抵消(3,0),并且该值显示为工作表已取消费用范围(“C7”)。这将在工作表起始页A4中循环直到lastrow 。
= VLOOKUP('起始页'!A4,'基金趋势'!A11:C21,3,0)
= VLOOKUP('起始页'!A5,'基金趋势'!A12:C22,3,0)
因为代码我还没有成功:
Sub equity()
Dim Nav_date As Date
Dim equity As Integer
Nav_date = Sheets("Start page").Range("A4")
equity = Application.WorksheetFunction.VLookup(Nav_date,_
Worksheets("Fund Trend").Range("A11:C12"), 3, False)
Sheets("Acurred Expenses").Range("C7") = equity
End Sub
答案 0 :(得分:1)
我认为这个答案可以分为三个部分:正确引用#container {
z-index:9;
position:relative;
border:1px solid red;
width:50px;
height:100px;
overflow-y:scroll;
overflow-x:visible;
}
#outside {
position:absolute;
top:10px;
left:75px;
}
对象的属性,检索最后一行数据,以及使用循环
正确引用范围的值:
我注意到的第一件事是您尝试将Range
变量指定为Date
对象。
这一行:
Range
应该是:
Nav_date = Sheets("Start page").Range("A4")
Nav_date = Sheets("Start page").Range("A4").Value
是具有属性和方法的对象。您必须明确引用您想要获得的范围 。它的价值,它的小区地址等等。
同样,下面重复这种不正确的语法。这一行:
Range
应该是:
Sheets("Acurred Expenses").Range("C7") = equity
编辑:根据评论whytheq提出了默认属性的观点。从技术上讲,代码Sheets("Acurred Expenses").Range("C7").Value = equity
不不正确,并且可以正常工作,因为范围的默认属性是Sheets("Acurred Expenses").Range("C7") = equity
。我倾向于更明确,但这是我个人的偏好所以我总是使用Value
所以没有歧义。无论哪种方式都应该工作!
检索工作表的最后一行
要查找工作表中最后一次使用的数据行,我们可以从工作簿的底部开始,然后查找"直到我们找到第一行(它将对应于工作表中数据的最后一行)。
此代码与激活A列中的最后一个单元格相同,并按 CTRL + Shit + ↑
Range.Value
重申一下,这从最底行开始并一直向上,返回停止的行数。这对应于在A列中输入的最后一个值。如果您的数据位于不同的列中,则可能需要更改A.
循环
最后,我们可以把我们学到的所有东西放在一起。在您Sub LastRow()
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
Debug.Print lRow
End Sub
对应于您的数据集中的最后一行后,我们可以像{{p}}一样查找lRow
:
VLOOKUP