循环有两个表和最后一行

时间:2018-03-20 16:26:08

标签: excel vba

我正在尝试建立一个公式:

=BDS(Bonds!J2& " ISIN","ISSUE_UNDERWRITER","Headers","Y")

在一张表中从另一个表中获取唯一标识符。 这些公式为我建立了一个表。在构建表格之后,我需要在另一张表格中取下一行:

=BDS(Bonds!J3& " ISIN","ISSUE_UNDERWRITER","Headers","Y") 

然后将该公式插入上一个公式构建的上一个表的末尾。

我尝试的是获取最后一行然后将其偏移一个,但我正试图找出如何循环它。

这就是我的尝试:

Sub Formula2()Formula2 Macro 
Range("A1").Select
ActiveCell.FormulaR1C1 = _
    "=BDS(Bonds!R[1]C[9]& "" ISIN"",""ISSUE_UNDERWRITER"",""Headers"",""Y"")"
lRow = Cells(Rows.Count, 1).End(xlUp).Select
Selection.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = _
    "=BDS(Bonds!R[-53]C10& "" ISIN"",""ISSUE_UNDERWRITER"",""Headers"",""Y"")"
Range("A57").Select
End Sub

Image of Table, Im trying to iterate through the ISIN Column. It is column "J"

1 个答案:

答案 0 :(得分:0)

虽然宏录制器使用selection.select,但在开发代码时会出现很大问题。值得花时间学习如何用range个对象替换它们。因此,虽然我没有直接回答您的问题,但我试图为您提供相关工具。

我已经在下面展示了一个示例来说明(虽然我不使用BDS()功能,所以我毫无疑问地弄错了细节)。重点是,如果你学会使用range对象四处走动,你会好起来的。

Sub formula()
Dim r As Range, sh As Worksheet, bondR As Range, bondSh as Worksheet
set sh = ActiveSheet
set r = sh.range("A1")
Set bondSh = Worksheets("Bonds")
Set bondR = bondSh.Range("J1")
For i = 1 To 10
  r.formula = "=BDS(bondR.offset(i,0) & "" ISIN"",""ISSUE_UNDERWRITER"",""Headers"",""Y"")"
  Set r = r.Offset(i, 0)
Next i
End Sub

我在这里定义了一个范围对象r,用于跟踪活动工作表上的位置,另一个bondR用于定位"债券&#34上的位置;片。一旦定义了这些范围的初始位置,就可以使用.offset(row,col)函数对它们进行操作,因为我已经完成了简单的for循环,在每个循环中向下移动1行(但是0列)。 / p>

随意提问。