Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3571|回复: 6

[已解决]请老师修改代码

[复制链接]
发表于 2014-3-8 10:52 | 显示全部楼层 |阅读模式
照瓢画芦葫,写了个代码,运行时出现错误:详见附件    20140306.zip (236.61 KB, 下载次数: 10)
发表于 2014-3-8 11:19 | 显示全部楼层    本楼为最佳答案   
  1. Sub 统计汇总()
  2.     Dim conn, sql(1 To 2), address(1 To 2), i, arr(1 To 2)
  3.     Set conn = CreateObject("adodb.connection")
  4.     If Val(Application.Version) >= 12 Then
  5.         conn.Open "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.FullName
  6.     Else
  7.         conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
  8.     End If
  9.     sql(1) = "select 商品编码,商品名称,发生单价,sum(销售数量),sum(实收金额) from [销售汇总$a3:j] where 所属组织 is not null group by 商品编码,商品名称,发生单价"
  10.     sql(2) = "select 销售日期,sum(销售数量),sum(实收金额) from [销售汇总$a3:j]  where 所属组织 is not null group by  销售日期"

  11.     'sql(1) = "select 商品编码,商品名称,发生单价,sum(销售数量),sum(实收金额),from [销售汇总$a4:j] where 所属组织 is not null group by 商品编码,商品名称,发生单价"
  12.     'sql(2) = "select 销售日期,sum(销售数量),sum(实收金额),from [销售汇总$a4:j]  where 所属组织 is not null group by  销售日期"

  13.     address(1) = "B"
  14.     address(2) = "J"
  15.     With Sheets("统计汇总")
  16.         .Range("b4:z" & Application.Max(.[b65536].End(xlUp).Row, 4)).Clear
  17.         For i = 1 To 2
  18.             .Range(address(i) & 4).CopyFromRecordset conn.Execute(sql(i))
  19.         Next i
  20.         For i = 1 To 2
  21.             arr(i) = .Range(address(i) & 65536).End(xlUp).Row
  22.             .Range(address(i) & arr(i) + 1) = "合计"
  23.         Next i
  24.         .Range("e" & arr(1) + 1).FormulaR1C1 = "=sum(r2c:r[-1]c)"
  25.         .Range("f" & arr(1) + 1).FormulaR1C1 = "=sum(r2c:r[-1]c)"
  26.         .Range("k" & arr(2) + 1).FormulaR1C1 = "=sum(r2c:r[-1]c)"
  27.         .Range("l" & arr(2) + 1).FormulaR1C1 = "=sum(r2c:r[-1]c)"

  28.         With Application.Union(.[e:e], .[f:f], .[k:k], .[l:l])
  29.             .NumberFormat = "0.00"
  30.         End With
  31.         For i = 1 To 2
  32.             With Range(address(i) & 4).CurrentRegion
  33.                 .Font.Size = 10
  34.                 .Borders.LineStyle = xlContinuous
  35.                 .HorizontalAlignment = xlCenter
  36.             End With
  37.         Next i
  38.     End With
  39.     conn.Close: Set sonn = Nothing
  40. End Sub
复制代码
回复

使用道具 举报

发表于 2014-3-8 11:20 | 显示全部楼层
SQL语句中在FROM前面多加了个逗号。

另外标题行是在A3。表的区域应该是从A3开始。
回复

使用道具 举报

发表于 2014-3-8 11:20 | 显示全部楼层
  1. sql(1) = "select 商品编码,商品名称,发生单价,sum(销售数量),sum(实收金额) from [销售汇总$a3:j] where 所属组织 is not null group by 商品编码,商品名称,发生单价"
  2. sql(2) = "select 销售日期,sum(销售数量),sum(实收金额) from [销售汇总$a3:j]  where 所属组织 is not null group by  销售日期"
复制代码
回复

使用道具 举报

发表于 2014-3-8 18:31 | 显示全部楼层
学习,帮顶
回复

使用道具 举报

 楼主| 发表于 2014-3-9 03:26 | 显示全部楼层
hwc2ycy 发表于 2014-3-8 11:20

谢谢!老师请再帮忙看看筛选不同数值的问题, 20140308.zip (249.47 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2014-3-9 08:08 | 显示全部楼层
hlb117 发表于 2014-3-9 03:26
谢谢!老师请再帮忙看看筛选不同数值的问题,

这个等有时间帮再你弄吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 03:38 , Processed in 0.462272 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表