【发布时间】:2020-07-11 09:58:35
【问题描述】:
我一直在努力将数据库(=45+5 or =SUM(D20:D23))中的公式记录导入Excel工作表。我的问题是当我从 Excel 单元格中的数据库中导入公式时,是来自数据库记录 (=45+5 or =SUM(D20:D23)) 的原始文本。
没关系,但我无法计算这个公式。从数据库导入后,我尝试了 VBA 中的选项:
ActiveSheet.Calculate, Worksheets(1).Calculate, ActiveWorkbook.Calculate
只有手动一个手动选项有效。当我使用公式设置单元格并按 ENTER 键时。
但我想自动化这个过程。
----编辑---- 原代码:
Sub GetDataFieldInfo()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim address_complete As String
Dim address_column As Integer
Dim address_row As Integer
Dim j As Integer
db_file = ThisWorkbook.Path & "\Example_db.mdb"
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
";Data Source=" & db_file & _
";Persist Security Info=False"
conn.Open
Set rs = conn.Execute("SELECT * FROM Students")
For i = 0 To rs.Fields.Count - 1
address_complete = findCellAddress(rs(i).Name)
address_row = Range(address_complete).Row
address_column= Range(address_complete).Column
rs.MoveFirst
j = 0
Do Until rs.EOF
If InStr(1, rs.Fields(rs(i).Name), "=", 1) Then
Cells(address_row + 1 + j, address_column).Formula = rs.Fields(rs(i).Name).Value
Else
Cells(address_row + 1 + j, address_column).Value = rs.Fields(rs(i).Name)
End If
j = j + 1
rs.MoveNext
Loop
Next
rs.Close
End Sub
【问题讨论】:
-
您可以使用
Worksheet.Function方法和循环将单元格值从文本转换为公式? -
@SamuelEverson 对于像
=IF(AND(H11="";I11="");0;IF(N11="";0;IF(H11="";ROUND(I11/(1+DATA!$A$3)*N11;2);H11*N11)))这样的更复杂的公式我应该使用什么函数