2011-05-22 70 views
1

我想在Excel Vba中實現查找功能。我沒有任何代碼可供分享,因爲我不確定如何開始實施。在Excel中使用查找下一個可用行VBA

在打開工作簿時,我想使用VBA將今天的日期輸入到A列中的下一個可用行 - 我目前正在工作。然而,在同一行的B列的那一點上,我在我的表中找到了一個股票利率,其中J2是日期,J3是股票的價格。

我想我需要的是一個公式,我可以在這個表格中查找我剛剛添加的日期,然後檢索與該日期相關的價格。我非常瞭解Excel中的Vlookups;這是我只是瞭解如何使用這裏查找每個下一個可用的行。

這裏是我的日期代碼:

Dim rnum as integer 

rnum = sheet17.usedrange.cells.rows.count +1 

sheet17.cells(rnum, 1).value = date 

我尋求相對(rnum, 2)查找功能爲下一個可用行。

回答

2

如果你要硬編碼,那會是

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 
+0

謝謝!我對它進行了硬編碼。很棒。謝謝!! – bdubb 2011-05-22 15:26:32

0

我假設當你說「表格中的股票價格」是指「工作表中的股票價格」,並且還假定J列中的值包含同一股票的股票價格。換句話說,您只能匹配該列中的日期,而不是股票代碼和日期。 (請讓我知道如果我有這些假設是錯誤的)。

這是說,你可以嘗試在B列下面的公式:

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

在這種情況下,該公式是在單元格B50和採用新的日期是A50。它說給出單元格J + n中的日期值,給我單元格J + n + 1中的值。

我添加了一個小的驗證檢查,看看在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 
相關問題