ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] SQL高手?急!help sos

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-19 15:20 | 显示全部楼层
  1.     Set SH1 = Sheets("Data")
  2.     SH1.Range("A2:Z1048576").ClearContents
  3.    
  4.     Str_coon = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\测试.accdb;"
  5.     Rem 季节    品牌    营销单号    系列名称    本厂款号    本厂颜色    下单日期    数量
  6.    
  7.     StrSQL = ""
  8.     StrSQL = StrSQL & "SELECT [季节],[品牌],[营销单号],[系列名称]"
  9.     StrSQL = StrSQL & ",'' AS [本厂款号],'' AS [本厂颜色]"
  10.     StrSQL = StrSQL & ",[下单日期]"
  11.     StrSQL = StrSQL & ",SUM([数量]) AS [数量]"
  12.     StrSQL = StrSQL & " FROM ("
  13.     Rem  防止出现:null
  14.     StrSQL = StrSQL & "SELECT  IIF(ISNULL([季节])=TRUE,'',[季节]) AS [季节]"
  15.     StrSQL = StrSQL & ",IIF(ISNULL([品牌])=TRUE,'',[品牌]) AS [品牌]"
  16.     StrSQL = StrSQL & ",IIF(ISNULL([营销单号])=TRUE,'',[营销单号]) AS [营销单号]"
  17.     StrSQL = StrSQL & ",IIF(ISNULL([系列名称])=TRUE,'',[系列名称]) AS [系列名称]"
  18.    
  19.     StrSQL = StrSQL & ",IIF(ISNULL([下单日期])=TRUE,'',[下单日期]) AS [下单日期]"
  20.     StrSQL = StrSQL & ",IIF(ISNULL([数量])=TRUE,0,[数量]) AS [数量]"
  21.     StrSQL = StrSQL & " FROM [营销订单]"
  22.    
  23.     StrSQL = StrSQL & ") GROUP BY [季节],[品牌],[营销单号],[系列名称],[下单日期]"
  24.    
  25.     SQLARR = GET_SQL_To_Arr(StrSQL, Str_coon, False)
  26.    
  27.     StrSQL = "SELECT DISTINCT [季节],[品牌],[营销单号],[系列名称],[本厂款号],[本厂颜色],[下单日期]"
  28.     StrSQL = StrSQL & " FROM ("
  29.     Rem  防止出现:null
  30.     StrSQL = StrSQL & "SELECT  IIF(ISNULL([季节])=TRUE,'',[季节]) AS [季节]"
  31.     StrSQL = StrSQL & ",IIF(ISNULL([品牌])=TRUE,'',[品牌]) AS [品牌]"
  32.     StrSQL = StrSQL & ",IIF(ISNULL([营销单号])=TRUE,'',[营销单号]) AS [营销单号]"
  33.     StrSQL = StrSQL & ",IIF(ISNULL([系列名称])=TRUE,'',[系列名称]) AS [系列名称]"
  34.     StrSQL = StrSQL & ",IIF(ISNULL([本厂款号])=TRUE,'',[本厂款号]) AS [本厂款号]"
  35.     StrSQL = StrSQL & ",IIF(ISNULL([本厂颜色])=TRUE,'',[本厂颜色]) AS [本厂颜色]"
  36.     StrSQL = StrSQL & ",IIF(ISNULL([下单日期])=TRUE,'',[下单日期]) AS [下单日期]"
  37.    
  38.     StrSQL = StrSQL & " FROM [营销订单]"
  39.     StrSQL = StrSQL & ")"
  40.     ARX = GET_SQL_To_Arr(StrSQL, Str_coon, False)
  41.    
  42.     Dim STR款号, STR颜色 As String
  43.     Dim BOOL As Boolean
  44.     For X = 0 To UBound(SQLARR, 1)
  45.         STR款号 = ","
  46.         STR颜色 = ","
  47.         BOOL = False
  48.         For I = 0 To UBound(ARX, 1)
  49.             If SQLARR(X, 0) = ARX(I, 0) And SQLARR(X, 1) = ARX(I, 1) And SQLARR(X, 2) = ARX(I, 2) And SQLARR(X, 3) = ARX(I, 3) And SQLARR(X, 6) = ARX(I, 6) Then
  50.                 BOOL = True
  51.                 If InStr(STR款号, "," & ARX(I, 4) & ",") = 0 Then '//  前后加上[,],防止包含关系
  52.                     STR款号 = STR款号 & ARX(I, 4) & ","
  53.                 End If
  54.                 If InStr(STR颜色, "," & ARX(I, 5) & ",") = 0 Then '//  前后加上[,],防止包含关系
  55.                     STR颜色 = STR颜色 & ARX(I, 5) & ","
  56.                 End If
  57.                
  58.             End If
  59.             BOOL = False
  60.         Next
  61.         If STR款号 <> "," Then
  62.             STR款号 = VBA.Mid(STR款号, 2, Len(STR款号) - 2)
  63.         End If
  64.         If STR颜色 <> "," Then
  65.             STR颜色 = VBA.Mid(STR颜色, 2, Len(STR颜色) - 2)
  66.         End If
  67.         SQLARR(X, 4) = STR款号
  68.         SQLARR(X, 5) = STR颜色
  69.     Next
  70.     SH1.Range("A2").Resize(UBound(SQLARR, 1) + 1, UBound(SQLARR, 2) + 1) = SQLARR
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-19 15:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
结果: QQ截图20180519152134.jpg

完整代码: 14885553.rar (50.36 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-19 22:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
opiona 发表于 2018-5-19 15:22
结果:

完整代码:

对于您!不说了,感动!!!感恩!!!对不起,没别的词形容此时此刻的心情!感谢这个词不能完整的表达我此时的心情

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-19 22:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
宝贝万岁 发表于 2018-5-18 22:23
附件采用的是公共变量,类模块运行SQL,能将同类需求规范化。

步骤:调取数据到数组,转置数组,汇总 ...

非常好~~完美,顺便说说如何送花?

TA的精华主题

TA的得分主题

发表于 2018-5-19 22:26 | 显示全部楼层
xiaoyu528 发表于 2018-5-19 22:15
非常好~~完美,顺便说说如何送花?

好用就行,要看原数据的话可以用我后面回复的帖子,一分二,原数据和汇总表都有,有变化的话代码也比较好改,这种代码的通用型比较高。花无所谓,能送就送,我也是偶尔上来学习的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 13:08 , Processed in 0.039410 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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