对导出Excel的数据进行操作:分组和统计

wea1978 2006-05-25 09:44:50
将数据库的内容导出Excel后,是否可将其进行分组,并且统计?
或者在导出的过程中先进行分组统计?
请教各位大侠!
谢谢!
...全文
709 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wea1978 2006-05-27
  • 打赏
  • 举报
回复
看来很多还要学习啊...
michael_zy 2006-05-26
  • 打赏
  • 举报
回复
这就是VBA中的数据透视表的问题。。。去MS的MSDN网站上查数据透视表
wea1978 2006-05-26
  • 打赏
  • 举报
回复
对啊...合并单元格,字体,背景色,显示网络线,单元格长宽,这些都需要设置...
tripman 2006-05-26
  • 打赏
  • 举报
回复
你要什么格式?合并单元格,设置单元格长宽、字体、显示单元格网格线等都可以在程序里实现,
如果不知道怎么写就录制宏然后看VBA的代码
wea1978 2006-05-26
  • 打赏
  • 举报
回复
导出来的数据基本没有格式可言...
看来这个解决方法还不是最好的啊
vbman2003 2006-05-25
  • 打赏
  • 举报
回复
如果你可以导出EXCEL为如下格式
a b c d e f
s1 0203 name 3 6 16
s1 0203 name 3 6 16
s2 0203 name 3 6 16
s2 0203 name 3 6 16
s2 0203 name 3 6 16
那么你重新排版就可以得到你要的格式了,也就是判断一下a值,如果下一个和上一个不样插入一行,填充相关值,最后清除a列的值,就可以了吧?
vbman2003 2006-05-25
  • 打赏
  • 举报
回复
可以的啊,先一行行向EXCEL表格单元格中插入数据,插入数据时用代码判断控制内容。完了统计一下,如果统计比较复杂,你可以先在EXCEL中录制一下相关统计的宏来获得代码。
wea1978 2006-05-25
  • 打赏
  • 举报
回复
行数肯定是不固定的,
导出方式是普通的数据集Recordset方式导出的...
就是这个分组统计搞不懂啊...
yuvotesyg518 2006-05-25
  • 打赏
  • 举报
回复
如果是逐条导入的话,也就不必在乎什么格式了!!
如果批量导入的话,格式太复杂还真不好对付!
tripman 2006-05-25
  • 打赏
  • 举报
回复
导出行数不固定不能用模板,只有在程序里控制导入的数据和格式了,就是数据写Excel表格位置的问题
wea1978 2006-05-25
  • 打赏
  • 举报
回复
举例:
导出是有如下数据
a b c d e f
s1 0203 name 3 6 16
s1 0203 name 3 6 16
s2 0203 name 3 6 16
s2 0203 name 3 6 16
s2 0203 name 3 6 16
导出时要成这样:
a b c d e f
s1
0203 name 3 6 16
0203 name1 3 6 16
s2
0203 name 3 6 16
0203 name1 3 6 16
0203 name2 3 6 16

randomx 2006-05-25
  • 打赏
  • 举报
回复
学学vba吧 不是内行
yuvotesyg518 2006-05-25
  • 打赏
  • 举报
回复
在导出之前从数据库得到数据集的时候执行分组统计比较好吧,我觉得。
一般的分组统计都可以通过SQL语句直接来实现的。

具体还要楼主要实现什么样的统计,不妨说出来大家分析分析啊!
wea1978 2006-05-25
  • 打赏
  • 举报
回复
大家帮忙看看啊,难道VB里没有这个功能吗?不会说只能导出来要用户自己去分组吧?
谢谢了!
tripman 2006-05-25
  • 打赏
  • 举报
回复
加两个变量分别累加分组统计和总计,在我的代码基础上改一下就OK了
wea1978 2006-05-25
  • 打赏
  • 举报
回复
谢谢楼上,差不多就是这个意思!
就差分组统计了,还有最后的合计....
tripman 2006-05-25
  • 打赏
  • 举报
回复
就你的例子,以下思路是否可行?
Dim i&
Dim s$
...
rs.Open "select * from yourtable order by a", Conn
rs.MoveFirst
i = 1
s = ""
Do Until rs.EOF
If rs("a") <> s Then
s = rs("a")
XLSHEET.Cells(i, 1) = rs("a")
i = i + 1
End If
XLSHEET.Cells(i, 2) = rs("b")
XLSHEET.Cells(i, 3) = rs("c")
XLSHEET.Cells(i, 4) = rs("d")
XLSHEET.Cells(i, 5) = rs("e")
XLSHEET.Cells(i, 6) = rs("f")
i = i + 1
rs.MoveNext
Loop
wea1978 2006-05-25
  • 打赏
  • 举报
回复
问题是列啊,行数啊什么的都没有确定的...
tripman 2006-05-25
  • 打赏
  • 举报
回复
录制宏的意思是让你看VBA的代码,然后加到VB中执行,不需要在excel中执行宏
wea1978 2006-05-25
  • 打赏
  • 举报
回复
录制宏很麻烦,而且要在excel打开时就执行...
加载更多回复(2)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧