2014-09-19 79 views
0

我在SQL查询中构建公式,然后使用EXCEL VBA函数CopyFromRecordSet在电子表格中插入公式。公式的文本正确输入,但仅显示为文本并且不计算。计算模式设置为自动,单元格格式为“常规”而不是“文本”。从记录集复制Excel计算公式时不计算

为了获得计算公式,我必须输入每个单元格,就好像我要编辑公式一样,然后离开单元格而不必实际编辑任何内容。只是进入和退出的动作会导致公式计算,但必须在每个单元上手动完成。

Sub Test1() 
    Application.ReferenceStyle = xlR1C1 

    Dim qry As String 
    qry = "SELECT mYEAR, '=RC[-1]*12' AS xFormula FROM tblYears" 

    Dim Datacmd As ADODB.Command 
    Set Datacmd = New ADODB.Command 

    Datacmd.CommandText = qry 

    Dim Datars As ADODB.Recordset 
    Set Datars = DB.RunSelect(GV.ConStr_Config, Datacmd) 

    ActiveSheet.Range("A1").CopyFromRecordset Datars 

    Application.ReferenceStyle = xlA1 
End Sub 

这导致了这个...

1  2 
1 2012 =RC[-1]*12 
2 2013 =RC[-1]*12 
3 2014 =RC[-1]*12 

然后我需要双击每个公式单元格开始编辑,然后我就可以点击另一个单元格退出公式,并会计算。

1  2 
1 2012 24144 
2 2013 24156 
3 2014 24168 

我试着加入现在计算按钮;并在开头添加VBA命令APPLICATION.CALCULATION = xlCalculationManual,最后添加APPLICATION.CALCULATE(和CalculateFULL)。

我无法在查询中进行计算,公式需要与最终产品中的Excel数据交互。

(该DB.RunSelect功能是我执行查询并返回断开连接的记录方法。)

感谢

回答

0

你将不得不遍历结果集和一组公式是这样的:

Range("A1").Formula = myFormulaString 

或者

Range("A1").FormulaR1C1 = myFormulaString 
+0

谢谢,我希望避免迭代细胞像这样,但它是设置公式的正确方法。 – Johnny3663 2014-09-22 19:12:47