首页 文章

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

提问于
浏览
1

我正在尝试在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 回答

  • 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

    我假设当你说“表中的股票汇率”时你的意思是“工作表中的股票汇率”,并假设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
    

相关问题