У меня проблема с оператором SQL в VBA.
У меня есть набор данных, в котором есть один столбец со значением до 3 десятичных разрядов, например:
Name Value
---------------
A 0.004
B 0.005
A 0.123
C 0.533
Я хочунаписать оператор SQL в VBA, который суммирует значение на основе имя
, например:
sql = select name, sum(value) from data.csv group by name
Сейчас моя проблема заключается в том, что когдаЯ делаю сумму, Excel, кажется, только принимает до 2 цифр для суммирования , что означает, что 0,004 будет 0 и 0,123 будет 0,12.В результате я пропустил какое-то значение в процессе суммирования:
Мой желаемый результат будет
A 0.127 (0.003 + 0.124)
B 0.005
C 0.533
Но вместо этого теперь я получаю
A 0.12 (0 + 0.12)
B 0
C 0.53
Чтоя должен сделать в этой ситуации, чтобы решить проблему?
Я пробовал сумму (cdbl (значение)), но она не работает.
Большое спасибо!
РЕДАКТИРОВАТЬ: мой конкретный код выглядит следующим образом:
Sub Createnewfile()
Dim cn As ADODB.Connection, rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
Dim sql As String
FName = "\new file.xlsx"
FPath = ThisWorkbook.Path & FName
If Not Dir(FPath, vbDirectory) = vbNullString Then Kill FPath
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=FPath
Set wsData = ActiveWorkbook.Sheets("Sheet1")
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
cn.ConnectionString = "Data Source=" & ThisWorkbook.Path & ";" & "Extended Properties=""text;HDR=Yes;FMT=Delimited;"""
cn.Open
sql = "SELECT Name, sum(cbdl(value)) as value " & _
"FROM data.csv " & _
"GROUP BY Name "
rs.Open sql, cn
For c = 0 To rs.Fields.count - 1
wsData.Cells(1, c + 1).Value = rs.Fields(c).Name
Next
rs.MoveFirst
r = wsData.UsedRange.Rows.count + 1
wsData.Cells(r, 1).CopyFromRecordset rs
rs.Close
cn.Close
Application.DisplayAlerts = False
With Workbooks("new file.xlsx")
.Save
End With
End Sub