目前,在Excel VBA中,我有一个简单的函数,它从工作表的第一行读取一组值,稍后在等式中使用它。
equity(i) = Worksheets("Data").Range("D2").Offset(i - 1, 0)
debt(i) = Worksheets("Data").Range("E2").Offset(i - 1, 0)
riskFree(i) = Worksheets("Data").Range("F2").Offset(i - 1, 0)
我想更改此设置,以便该函数仅从工作表中突出显示的选项中读取值。因此,如果我从第20行开始的数据中选择一个值表,它应该在D20,E20 F20等中读取,而不是现在设置的D2,E2和F2。我试过了:
equity(i) = Worksheets("Data").Range("D" & Rows.Count).end(xlUp).Offset(i - 1, 0)
debt(i) = Worksheets("Data").Range("E" & Rows.Count).end(xlUp).Offset(i - 1, 0)
riskFree(i) = Worksheets("Data").Range("F" & Rows.Count).end(xlUp).Offset(i - 1, 0)
但没有运气。我做错了什么?
到目前为止我看到的是
Function VarunModel(Table As Range, Optional EndCondition As Integer = 0) As Variant
Dim iNumCols As Integer, iNumRows As Integer
Dim i As Integer
iNumCols = Table.Columns.Count
iNumRows = Table.Rows.Count
maturity = Worksheets("KMV-Merton").Range("B2").Value
For i = 1 To iNumRows
equity(i) = Worksheets("Data").Range("D2").Offset(i - 1, 0)
debt(i) = Worksheets("Data").Range("E2").Offset(i - 1, 0)
riskFree(i) = Worksheets("Data").Range("F2").Offset(i - 1, 0)
Next I
答案 0 :(得分:0)
如果您想要通过D20:F50的范围时D20的值,只需将D20:F50范围视为其自身的细胞子集;就像一个微型的独立工作表。
with Worksheets("Data")
equity(i) = .Range("D20:F50").Range("A1").Value '◄ D20
debt(i) = .Range("D20:F50").Cells(1, 2).Value '◄ E20
riskFree(i) = .Range("D20:F50").Range("C3").Value '◄ F22
end with
当您处理一系列已隔离的细胞时,所有范围和细胞参考都与细胞范围有关;例如A1是左上角的单元格。写上述内容的另一种方式是,
with Worksheets("Data").Range("D20:F50")
equity(i) = .Range("A1").Value '◄ D20
debt(i) = .Cells(1, 2).Value '◄ E20
riskFree(i) = .Range("C3").Value '◄ F22
end with