我最初注释掉的代码需要用户在公式添加到单元格后将公式拖入公式。我修改了下面的程序和我switched from a For each cell
loop - 这可以通过For each
循环结构完成吗?利用Cell.address
或其他方法?请假设我的变量都已定义。With对于Excel VBA中的每个循环,我如何引用公式中的单元格地址?
Dim client_row As Long
'Dim v As Long
Dim v As Variant
Dim i As Integer
i = 2
client_row = 0
LASTROW2 = Range("B" & Rows.Count).End(xlUp).Row
Set rng2 = Range("N2:N" & LASTROW2)
' For Each cell In rng2
' If cell.Offset(0, -13) <> "" Then
' cell.Formula = "=IFERROR(TEXT(IF(F2=""GBP"",($H2-(IF(LEN($C2)=7,BDH($C2&"" ""&""SEDOL"",""PX_LAST"",TODAY()),BDH($C2&"" ""&""CUSIP"",""PX_LAST"",TODAY()))))/$H2/100,IF(E2=""EQ"",($H2-(IF(LEN($C2)=7,BDH($C2&"" ""&""SEDOL"",""PX_LAST"",TODAY()),BDH($C2&"" ""&""CUSIP"",""PX_LAST"",TODAY()))))/$H2,($H2-(IF(LEN($C2)=7,BDH($C2&"" ""&""SEDOL"",""PX_LAST"",TODAY()),BDH($C2&"" ""&""CUSIP"",""PX_LAST"",TODAY()))))/$H2*100)),""0.00""),""PLEASE REVIEW"")"
' Debug.Print cell
' End If
' Next cell
For Each v In rng2
If v.Offset(0, -13) <> "" Then
v.Formula = "=IFERROR(TEXT(IF($F" & i & "=""GBP"",($H2-(IF(LEN($C2)=7,BDH($C2&"" ""&""SEDOL"",""PX_LAST"",TODAY()),BDH($C2&"" ""&""CUSIP"",""PX_LAST"",TODAY()))))/$H2/100,IF(E2=""EQ"",($H2-(IF(LEN($C2)=7,BDH($C2&"" ""&""SEDOL"",""PX_LAST"",TODAY()),BDH($C2&"" ""&""CUSIP"",""PX_LAST"",TODAY()))))/$H2,($H2-(IF(LEN($C2)=7,BDH($C2&"" ""&""SEDOL"",""PX_LAST"",TODAY()),BDH($C2&"" ""&""CUSIP"",""PX_LAST"",TODAY()))))/$H2*100)),""0.00""),""PLEASE REVIEW"")"
i = i + 1
Debug.Print i
End If
Next v
您可以使用specialcells获得非空白单元格,然后抵消它插入formulas.'Columns(“A:A”)SpecialCells(。 xlCellTypeConstants,23).Offset(,13).Formula =“=”“MyFormula”“”'会这样工作,因为范围应该自动递增 – Davesexcel
@Davesexcel您能举个例子吗? – phillipsK