使用日期

时间:2015-04-24 17:01:05

标签: excel vba loops excel-vba vlookup

我正在使用三张。工作表起始页的日期为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

1 个答案:

答案 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