ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 望江婷

[分享] 赵刚老师《Access经典用变量条件分类汇总数据库》推荐网友们学习

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-8 16:58 | 显示全部楼层
原帖由 无辣味水煮鱼 于 2011-3-8 16:55 发表

Zhaogang1960老师,你太低调了,我也很想做你这样的excel盲,估计很多人都想做你这样的excel盲。

同感,唉人品跃人耳目,感动

TA的精华主题

TA的得分主题

发表于 2011-3-8 16:58 | 显示全部楼层
原帖由 无辣味水煮鱼 于 2011-3-8 16:55 发表

Zhaogang1960老师,你太低调了,我也很想做你这样的excel盲,估计很多人都想做你这样的excel盲。

不信吧,我都不信,请看上午我问的:
做了一个,但我不知道公式是怎么插入的,总是显示提示更新的对话框,用了Application.AskToUpdateLinks = False也不行,试试看吧
顺便告诉我一下:='D:\Documents and Settings\Administrator\Application Data\Microsoft\Excel\005\[2010申报表.xlsm]客户基本信息'!$C$5是怎么插入到单元格的
http://club.excelhome.net/viewth ... p;page=1#pid4694110

TA的精华主题

TA的得分主题

发表于 2011-3-8 17:04 | 显示全部楼层
有点疑问:
access数据库中的“日期”字段是日期格式(yyyy-mm-dd),包含“日”,这样的分组汇总可能不符合楼主的要求,下面代码中是按照数据库中的日期格式输出的
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

Private Sub CommandButton1_Click()
    Dim s$, t$, v$, i%, SQL$
    For i = 1 To 4
        If Me.Controls("ComboBox" & i).Value <> "" Then
            t = t & "," & Me.Controls("Label" & i).Caption
            v = v & "," & Me.Controls("Label" & i).Caption
        Else
            t = t & ",null"
        End If
    Next
    t = t & ",费用类别,费用明细,sum(金额)"
    v = v & ",费用类别,费用明细"
    If ComboBox1.Value <> "" Then
        s = s & " and " & Label1.Caption & "='" & ComboBox1.Value & "'"
        If ComboBox2.Value <> "" Then s = s & " and month(" & Label2.Caption & ")=val(" & Split(ComboBox2.Value, "-")(1) & ")"
    Else
        If ComboBox2.Value <> "" Then s = s & " and " & Label1.Caption & "='" & Split(ComboBox2.Value, "-")(0) & "年' and month(" & Label2.Caption & ")=val(" & Split(ComboBox2.Value, "-")(1) & ")"
    End If
    For i = 3 To 4
        If Me.Controls("ComboBox" & i).Value <> "" Then s = s & " and " & Me.Controls("Label" & i).Caption & "='" & Me.Controls("ComboBox" & i).Value & "'"
    Next
    If s = "" Then Exit Sub
    SQL = "select " & Mid(t, 2) & " from 费用汇总单 where " & Mid(s, 6) & " group by " & Mid(v, 2)
    Set rs = New ADODB.Recordset
    rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
    With Sheets("查询")
        .[A4:H65536].ClearContents
        .Range("b4").CopyFromRecordset rs
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2011-3-8 17:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
附件
材料汇总.rar (31.95 KB, 下载次数: 85)

TA的精华主题

TA的得分主题

发表于 2011-3-8 17:10 | 显示全部楼层
赵老师,你真的是一个很热心的人!同时也向你学了很多东西,谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-8 17:18 | 显示全部楼层
谢谢赵老师,我的天呢,我的附件数据库数据写错了,让赵老师受累了,我看看试一下你的代码,下面的才是我准备上船的数据库。
数据库.rar (7.71 KB, 下载次数: 24)

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-8 17:21 | 显示全部楼层
因为我的错,给赵老师增添了不必要的脑力劳动,致歉,对不起了

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-8 17:33 | 显示全部楼层
谢谢赵老师,想要的结果满足了,就是按月汇总这个条件不能实现了,我学习学习,看看实在不行就把这个条件去了,让你受累了

TA的精华主题

TA的得分主题

发表于 2011-3-8 17:41 | 显示全部楼层
原帖由 望江婷 于 2011-3-8 17:18 发表
谢谢赵老师,我的天呢,我的附件数据库数据写错了,让赵老师受累了,我看看试一下你的代码,下面的才是我准备上船的数据库。
884743

没有发现有什么区别,下面按照月份汇总:
Private Sub CommandButton1_Click()
    Dim s$, t$, v$, i%, SQL$
    For i = 1 To 4
        If Me.Controls("ComboBox" & i).Value <> "" Then
'            If i <> 2 Then t = t & "," & Me.Controls("Label" & i).Caption Else t = t & ",year(" & Me.Controls("Label" & i).Caption & ")&month(" & Me.Controls("Label" & i).Caption & ")"
'            If i <> 2 Then v = v & "," & Me.Controls("Label" & i).Caption Else v = v & ",year(" & Me.Controls("Label" & i).Caption & ")&month(" & Me.Controls("Label" & i).Caption & ")"
            If i <> 2 Then t = t & "," & Me.Controls("Label" & i).Caption Else t = t & ",month(" & Me.Controls("Label" & i).Caption & ")"'纯按月份,上面是年连接月
            If i <> 2 Then v = v & "," & Me.Controls("Label" & i).Caption Else v = v & ",month(" & Me.Controls("Label" & i).Caption & ")"
        Else
            t = t & ",null"
        End If
    Next
    t = t & ",费用类别,费用明细,sum(金额)"
    v = v & ",费用类别,费用明细"
    If ComboBox1.Value <> "" Then
        s = s & " and " & Label1.Caption & "='" & ComboBox1.Value & "'"
        If ComboBox2.Value <> "" Then s = s & " and month(" & Label2.Caption & ")=val(" & Split(ComboBox2.Value, "-")(1) & ")"
    Else
        If ComboBox2.Value <> "" Then s = s & " and " & Label1.Caption & "='" & Split(ComboBox2.Value, "-")(0) & "年' and month(" & Label2.Caption & ")=val(" & Split(ComboBox2.Value, "-")(1) & ")"
    End If
    For i = 3 To 4
        If Me.Controls("ComboBox" & i).Value <> "" Then s = s & " and " & Me.Controls("Label" & i).Caption & "='" & Me.Controls("ComboBox" & i).Value & "'"
    Next
    If s = "" Then Exit Sub
    SQL = "select " & Mid(t, 2) & " from 费用汇总单 where " & Mid(s, 6) & " group by " & Mid(v, 2)
    Set rs = New ADODB.Recordset
   
    rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
    With Sheets("查询")
        .[A4:H65536].ClearContents
        .Range("b4").CopyFromRecordset rs
    End With
End Sub

[ 本帖最后由 zhaogang1960 于 2011-3-8 17:42 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-3-8 17:43 | 显示全部楼层
附件
材料汇总.rar (30.17 KB, 下载次数: 98)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-29 06:45 , Processed in 0.050120 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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