有没有办法通过点击单元格来显示公式?我在vba中编写了多个硬编码公式,在运行宏之后,我只在单元格中获取值。我想要它,以便宏运行后,我仍然可以在单元格中查看公式。这些是我目前的公式:
Dim i, lastrow As Integer
Range("a10").Select
Selection.End(xlDown).Select
lastrow = ActiveCell.Row
For i = 10 To lastrow
Sheets("20140618 Loans").Range("Q" & i) = Application.VLookup(Sheets("20140618 Loans").Range("D" & i), Sheets("20140617 Loans").Range("D:P"), 13, False)
Sheets("20140618 Loans").Range("R" & i) = Sheets("20140618 Loans").Range("P" & i) - Sheets("20140618 Loans").Range("Q" & i)
Sheets("20140618 Loans").Range("S" & i) = Application.VLookup(Sheets("20140618 Loans").Range("D" & i), Sheets("20140617 Loans").Range("D:H"), 5, False)
Sheets("20140618 Loans").Range("T" & i) = Sheets("20140618 Loans").Range("H" & i) - Sheets("20140618 Loans").Range("S" & i)
Sheets("20140618 Loans").Range("U" & i) = Application.VLookup(Sheets("20140618 Loans").Range("D" & i), Sheets("20140617 Loans").Range("D:G"), 4, False)
Sheets("20140618 Loans").Range("V" & i) = Sheets("20140618 Loans").Range("G" & i) - Sheets("20140618 Loans").Range("U" & i)
Sheets("20140618 Loans").Range("W" & i) = WorksheetFunction.SumIf(Sheets("WSO Interest").Range("H:H"), Sheets("20140618 Loans").Range("D" & i), Sheets("WSO Interest").Range("S:S"))
Sheets("20140618 Loans").Range("X" & i) = Application.VLookup(Sheets("20140618 Loans").Range("D" & i), Sheets("20140618 PNL").Range("C:N"), 12, False)
Sheets("20140618 Loans").Range("Y" & i) = Sheets("20140618 Loans").Range("R" & i) - Sheets("20140618 Loans").Range("W" & i) - Sheets("20140618 Loans").Range("T" & i) * (Sheets("20140618 Loans").Range("G" & i) / 100) - Sheets("20140618 Loans").Range("X" & i)
谢谢你们。
答案 0 :(得分:3)
您没有在单元格中编写公式。您将值设置为相等运算符右侧的内容。使用具有相等性的范围对象意味着您要设置值,而不是公式。要设置公式,您需要指定Formula
属性,并且必须像在Excel中一样设置写公式。
例如
Sheets("20140618 Loans").Range("Q" & i).Formula = _
"=VLOOKUP('20140618 Loans'!D" & i & ",'20140617 Loans'!D:P, 13, 0)"
此外,这不是您问题的一部分,但我认为这将有助于您了解With
声明。
http://msdn.microsoft.com/en-ca/library/wc500chb.aspx
通过使用With ... End With,您可以对a执行一系列语句 指定的对象,不指定对象的名称倍数 倍。在With语句块中,您可以指定一个成员 对象以句点开头,就像With语句对象一样 在它之前。
答案 1 :(得分:1)
使用.Formula
方法,如下所示:
Sheets("20140618 Loans").Range("Q" & i).Formula = '...your formula here
注意:您需要添加引号并将其格式化为由工作表计算而不是由VBA计算的公式。例如:
Range("A1").Formula = "=1+2"
答案 2 :(得分:0)
您必须构建字符串以反映工作公式
例如 如果您的列A值如下所示
运行以下宏
Sub FillInFormula()
Dim i, lastrow As Integer
Range("A1").Select
Selection.End(xlDown).Select
lastrow = ActiveCell.Row
For i = 1 To lastrow
Range("B" & i) = "=sum(A" & i & ":A" & i + 1 & ")"
Next i
End Sub
像这样的东西
P.S。使用 ctrl +`(选项卡上方)一次查看所有公式