繁体   English   中英

Excel VBA:仅当手动插入时,公式不能与CopyFromRecordset一起使用

[英]Excel VBA: Formulas not working with CopyFromRecordset, only when manually inserted

仅当我从SQL查询中手动插入CopyFromRecordset时,我的公式才会重新计算。

我有一个到SQL表的连接,该表返回一组行并将它们插入到我的表中。 在同一张纸上,我在数据旁边的列中有一些公式(SUM.IF类型)。 连接正常,插入的数据看起来正常。 当我从SQL查询复制数据并将其插入到Excel工作表中时,公式可以重新计算并起作用。 当我使用CopyFromRecordset时,公式将不会重新计算,而只会输出“-”。

单元格格式不变。 当我插入CopyFromRecordset时,公式仍然看起来正确且相同。 当我尝试重新计算时,为什么公式不会更新?

我使用的代码:

sht.Select
//Selects old records and clears them
LastRow = sht.Cells(sht.Rows.Count, "B").End(xlDown).Row
Set DataRange = Range("A2:L" & LastRow)
DataRange.Select
DataRange.ClearContents
//Gets data from SQL query and inserts to sheet
strSQL = "selects column 1,2,3 from table"
rs.ActiveConnection = Conn
rs.Open strSQL, Conn, 1, 1
sht.Range("A2").CopyFromRecordset rs

我从SUM.IF公式中得到的全部是“-”。

好的,所以问题在于包含数字的列未正确格式化。 excel列的格式正确,但是显然来自SQL的数据是以varchar格式发送的。 因此,CopyFromRecordset只是将数据倒入工作表中,并且数字没有重新格式化,而我的SUMIF()则不接受它作为数字。 我只是更改了我的sql行以将该列转换为float

strSQL = "SELECT  CONVERT(float,[numberColumn]) AS [number], column2, column3"

现在一切正常! :D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM