具有以下vba代码,可使用sql从excel工作表(工作表名称为Structre)中查询,但即时消息遇到“ FROM子句中的语法错误”
Dim MyConnect As String
Dim MyRecordset As ADODB.Recordset
Dim MySQL As String
MyConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=Excel 12.0"
mysql2 = SELECT [Structure$].c, [Structure$].a, [Structure$].b from [Structure$] _
join(SELECT a, sum(c) as csum FROM [Structure$] group by a) tmp on tmp.a=[Structure$].a
Set MyRecordset = New ADODB.Recordset
MyRecordset.Open mysql2, MyConnect, adOpenStatic, adLockReadOnly, adCmdText
ThisWorkbook.Sheets.Add
ActiveSheet.Range("A2").CopyFromRecordset MyRecordset
a b c Desired col: weights
Finance 1 123 123/(123+345+456)
Finance 2 345 345/(123+345+456)
Finance 3 456 456/(123+345+456)
Operation 1 789 789/(789+12)
Operation 2 12 12/(789+12)
BD 1 111 111/(111+222)
BD 2 222 222/(111+222)
我想做的是从表(具有a,b,c列)中检索它们,并插入新的列权重作为c / sum(groupby(a)),如上表所示。不知道我哪里出错了(仍然是sql的新手)。
感谢任何帮助
=IF(A2=A1,SUMIF(A:A,A2,C:C),SUMIF(A:A,A2,C:C))
然后您可以在D列中使用以下内容
=C2/E2
您也可以合并两个公式。
=C2/IF(A2=A1,SUMIF(A:A,A2,C:C),SUMIF(A:A,A2,C:C))