【问题标题】:Using a Lookup at Next Available Line in Excel VBA在 Excel VBA 中使用下一个可用行查找
【发布时间】:2011-05-22 14:50:26
【问题描述】:

我正在尝试在 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) 相关的查找功能作为下一个可用行。

【问题讨论】:

    标签: vba excel lookup


    【解决方案1】:

    如果你想硬编码,那就是

    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
    

    【讨论】:

      【解决方案2】:

      我假设当您说“表格中的股票价格”时,您的意思是“工作表中的股票价格”,并且还假设 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 1970-01-01
        • 2011-08-21
        • 1970-01-01
        相关资源
        最近更新 更多