VBA 在单元格中同时显示结果和公式(用于审核目的)
VBA show BOTH results and formula (for audit purposes) in the cell
我的拼图需要帮助。我写了一个工作正常的代码。现在用户不仅希望看到最终结果,还希望看到写在 VBA 中的公式(用于审核目的)以验证结果是否正确。有没有办法在同一个单元格中同时显示结果和公式?
到目前为止我的代码:
Sub Vlookup_Condition_VAT_table()
Dim Rng As Range
Dim i As Long
Application.ScreenUpdating = False
Workbooks("GST_recovery_overclaim.xlsm").Worksheets("MonthlyData_Raw").Activate
'Identify the Destination location to start populating vlookuped values
Range("AK2").Activate
With Worksheets("MonthlyData_Raw").Cells
Set Rng = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For i = 2 To Rng.Rows.Count
'populate the destination range with
'vlookup values from the list vlookup table
Rng.Cells(i, 37) = Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False)
Next
End With
Application.ScreenUpdating = True
End Sub
非常感谢,
拉斯
也许可以在结果中添加带有答案和公式的文本。
Rng.Cells(i, 37) = "Answer: " & Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False) & ", Formula: = Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False)"
如果我没理解错的话,您想显示单元格中输入的公式和结果。这个怎么样?
'Assume that you have a Range("A1") equals to = cos(20)
Sub GetFormula()
Dim MyFormula As String
MyFormula = Replace(Range("A1").Formula, "=", "")
MsgBox ("Formula is : " & MyFormula _
& " Result is :" & Range("A1"))
End Sub
如果您没有查看数千行,您可以尝试以下操作。
而不是使用此行来打印 vlookup 公式的结果:
Rng.Cells(i, 37) = Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False)
您可以改为将实际公式放入具有此更改的单元格中
Rng.Cells(i, 37).Formula = "=VLOOKUP(" & _
.Cells(i, 28).Address & "," & _
"'" & Sheets("VAT_apportionment_table_201310").name & "'!D:G," & _
"4," & _
"False)"
----------------根据操作评论更新------------------------ ---
通过 ISERROR
函数添加错误捕获(未测试)
Dim errMsg as String
errMsg = "Not in exception list"
Rng.Cells(i, 37).Formula = "=ISERROR(VLOOKUP(" & _
.Cells(i, 28).Address & "," & _
"'" & Sheets("VAT_apportionment_table_201310").name & "'!D:G," & _
"4," & _
"False), " & errMsg & ")"
出于几个原因,我为错误消息创建了一个变量。
- 以后更容易调试
- 像这样处理发送到单元格的公式中的文本可能很棘手。使用变量可以解决棘手问题。
我的拼图需要帮助。我写了一个工作正常的代码。现在用户不仅希望看到最终结果,还希望看到写在 VBA 中的公式(用于审核目的)以验证结果是否正确。有没有办法在同一个单元格中同时显示结果和公式?
到目前为止我的代码:
Sub Vlookup_Condition_VAT_table()
Dim Rng As Range
Dim i As Long
Application.ScreenUpdating = False
Workbooks("GST_recovery_overclaim.xlsm").Worksheets("MonthlyData_Raw").Activate
'Identify the Destination location to start populating vlookuped values
Range("AK2").Activate
With Worksheets("MonthlyData_Raw").Cells
Set Rng = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For i = 2 To Rng.Rows.Count
'populate the destination range with
'vlookup values from the list vlookup table
Rng.Cells(i, 37) = Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False)
Next
End With
Application.ScreenUpdating = True
End Sub
非常感谢, 拉斯
也许可以在结果中添加带有答案和公式的文本。
Rng.Cells(i, 37) = "Answer: " & Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False) & ", Formula: = Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False)"
如果我没理解错的话,您想显示单元格中输入的公式和结果。这个怎么样?
'Assume that you have a Range("A1") equals to = cos(20)
Sub GetFormula()
Dim MyFormula As String
MyFormula = Replace(Range("A1").Formula, "=", "")
MsgBox ("Formula is : " & MyFormula _
& " Result is :" & Range("A1"))
End Sub
如果您没有查看数千行,您可以尝试以下操作。
而不是使用此行来打印 vlookup 公式的结果:
Rng.Cells(i, 37) = Application.VLookup(.Cells(i, 28), Sheets("VAT_apportionment_table_201310").Range("D:G"), 4, False)
您可以改为将实际公式放入具有此更改的单元格中
Rng.Cells(i, 37).Formula = "=VLOOKUP(" & _
.Cells(i, 28).Address & "," & _
"'" & Sheets("VAT_apportionment_table_201310").name & "'!D:G," & _
"4," & _
"False)"
----------------根据操作评论更新------------------------ ---
通过 ISERROR
函数添加错误捕获(未测试)
Dim errMsg as String
errMsg = "Not in exception list"
Rng.Cells(i, 37).Formula = "=ISERROR(VLOOKUP(" & _
.Cells(i, 28).Address & "," & _
"'" & Sheets("VAT_apportionment_table_201310").name & "'!D:G," & _
"4," & _
"False), " & errMsg & ")"
出于几个原因,我为错误消息创建了一个变量。
- 以后更容易调试
- 像这样处理发送到单元格的公式中的文本可能很棘手。使用变量可以解决棘手问题。