在Excel VBA中使用下一个可用行的查找

我正试图在Excel Vba中实现查找function。 我没有任何代码可以分享,因为我不确定如何开始实施。

打开工作簿后,我想使用VBA将今天的dateinput到列A中的下一个可用行 – 我目前正在工作。 然而,在同一行B列的那一点上,我在表中find了一个股票价格,其中J2是date,J3是股票的价格。

我想我需要的是一个公式,我可以查找我刚添加在这个表中的date,然后检索与该date相关的价格。 我非常了解Excel中的Vlookups; 这是我只是了解如何使用这里查找每一个下一个可用的行。

这是我的date代码:

Dim rnum as integer rnum = sheet17.usedrange.cells.rows.count +1 sheet17.cells(rnum, 1).value = date 

我正在寻找相对于(rnum, 2)查找function作为下一个可用的行。

如果你想硬编码,那就是了

 sheet17.cells(rnum, 2).formula = "=vlookup(" & sheet17.cells(rnum, 1).address(false,false,xlA1) & ", $J:$K, 2, false)" 

如果您希望使用上一行中的任何公式,

 sheet17.range(sheet17.cells(rnum-1, 2), sheet17.cells(rnum, 2)).FillDown 

我假设你说“表中的股票利率”是指“工作表中的股票利率”,并假设J列中的值包含同一股票的股票利率。 换句话说,您只能匹配该列中的date,而不是股票代码和date。 (请让我知道如果我有这些假设是错误的)。

那是说,你可以尝试在列B中的以下公式:

 =IF(A50<>"",INDEX(J:J,MATCH(A50,StockSheet!J:J,0) +1),"") 

在这种情况下,公式在单元格B50中,并假定新的date在A50中。 它说,在给定单元格J + n中的date值,给我单元格J + n + 1的值

我添加了一个小的validation检查,看看在A50中是否有价值,但你可能想要更深入。

另外,如果你想使B50的值为静态,那么就使用下面的代码:

 Sub mySub() Dim x As Range 'I assume this range will be for your currentm, working worksheet Set x = Range("B50", "B50") x.Formula = "=IF(A50<>"""",INDEX(J:J,MATCH(A50,Codes!J:J,0) +1),"""")" x = x.Value End Sub