我正在尝试建立一个公式:
=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"
答案 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>
随意提问。