运行宏后显示硬编码公式

时间:2014-06-24 17:44:56

标签: excel vba excel-vba

有没有办法通过点击单元格来显示公式?我在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)

谢谢你们。

3 个答案:

答案 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值如下所示

enter image description here

运行以下宏

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

enter image description here

像这样的东西

P.S。使用 ctrl +`(选项卡上方)一次查看所有公式