Excel精英培训网

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

[已解决]EXCEL按工号汇总金额但不包括单价等于0的

[复制链接]
发表于 2014-5-10 19:12 | 显示全部楼层 |阅读模式
本帖最后由 张雄友 于 2014-5-10 19:55 编辑

任何一员工只要单价是没有的就不汇总。如某员工有多条记录,但是其中之一条记录没有单价,就不用汇总,即使某条记录有单价。
  1. Sub SQL()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, strSQL As String
  4.     Dim i As Integer, PathStr As String
  5.     Set Conn = CreateObject("ADODB.Connection")
  6.     Set Rst = CreateObject("ADODB.Recordset")
  7.     PathStr = ThisWorkbook.FullName
  8.     Select Case Application.Version * 1    '
  9.     Case Is <= 11
  10.         strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
  11.     Case Is >= 12
  12.         strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
  13.     End Select
  14.    
  15.     Conn.Open strConn
  16.     strSQL = "Select DISTINCT 工号 ,SUM(金额) AS 金额 From [明细$] WHERE 单价 > 0 Group By 工号 "
  17.     '任何一员工只要单价是没有的就不汇总。如某员工有多条记录,但是其中之一条记录没有单价,就不用汇总,即使某条记录有单价。这里设置不对的?
  18.     '
  19.     Set Rst = Conn.Execute(strSQL)    '
  20.     With Sheets("放置") ''
  21.         .Cells.ClearContents
  22.         For i = 0 To Rst.Fields.Count - 1    '
  23.             .Cells(1, i + 1) = Rst.Fields(i).Name
  24.         Next i
  25.         .Range("A2").CopyFromRecordset Rst
  26.         .Cells.EntireColumn.AutoFit  '
  27.         .Cells.EntireColumn.AutoFit
  28.     End With
  29.     Rst.Close
  30.     Conn.Close
  31.     Set Conn = Nothing
  32.     Set Rst = Nothing
  33. End Sub
复制代码
最佳答案
2014-5-10 19:42
  1. strSQL = "Select DISTINCT 工号 ,SUM(金额) AS 金额 From [明细$] WHERE 工号 not in (Select DISTINCT 工号 From [明细$] WHERE 单价 is null and len(工号)>0) Group By 工号 "
复制代码

EXCEL按工号汇总金额但不包括单价等于0的.rar

27.57 KB, 下载次数: 21

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-5-10 19:42 | 显示全部楼层    本楼为最佳答案   
  1. strSQL = "Select DISTINCT 工号 ,SUM(金额) AS 金额 From [明细$] WHERE 工号 not in (Select DISTINCT 工号 From [明细$] WHERE 单价 is null and len(工号)>0) Group By 工号 "
复制代码
回复

使用道具 举报

发表于 2014-5-10 20:23 | 显示全部楼层
SQL真强大,一句就搞定了!

点评

数据源要求要规范,缺乏灵活性,这个不学也罢  发表于 2014-5-10 21:12
回复

使用道具 举报

 楼主| 发表于 2014-5-10 20:30 | 显示全部楼层
su45 发表于 2014-5-10 20:23
SQL真强大,一句就搞定了!

是的,以前老用数据透视(天天拉来拉去,烦死了),现在发现很强大。
回复

使用道具 举报

发表于 2014-5-10 21:36 | 显示全部楼层
学习了,代码的威力
回复

使用道具 举报

发表于 2014-5-10 23:30 | 显示全部楼层
sql厉害啊,学习了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 16:17 , Processed in 0.286246 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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