20170928xlVBA自定义分类汇总
SubtotalByCQL Range("A1:E100").Value, "Select 1,2,Sum(4),Count(4) GroupBy 1,2", Range("J1"), True
Sub SubtotalByCQL(ByVal Arr As Variant, ByVal CQL As String, ByVal DesRange As Range, Optional Header As Boolean = False)
Dim i As Long, j As Long, m As Long
Dim Sel As String, Grp As String, Sels, Grps
Dim Ar() As Variant, Br As Variant
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
CQL = UCase(CQL)
Sel = Replace(Replace(Split(CQL, "GROUPBY")(0), " ", ""), "SELECT", "")
Sels = Split(Sel, ",")
Grp = Replace(Split(CQL, "GROUPBY")(1), " ", "")
Grps = Split(Grp, ",")
If Header Then
Key = ""
For j = LBound(Grps) To UBound(Grps)
Key = Key & ";" & Arr(1, CLng(Grps(j)))
Next j
Key = Mid(Key, 2)
ReDim Ar(0 To 0)
m = 0
For j = LBound(Sels) To UBound(Sels)
ReDim Preserve Ar(0 To m)
If IsNumeric(Sels(j)) Then
Ar(m) = Arr(1, CLng(Sels(j)))
Else
Select Case Split(Sels(j), "(")(0)
Case "SUM"
Ar(m) = Arr(1, CLng(Split(Split(Sels(j), "(")(1), ")")(0))) & "-求和"
Case "COUNT"
Ar(m) = Arr(1, CLng(Split(Split(Sels(j), "(")(1), ")")(0))) & "-计数"
End Select
End If
m = m + 1
Next j
Dic(Key) = Ar
End If
For i = LBound(Arr) + IIf(Header, 1, 0) To UBound(Arr)
Key = ""
For j = LBound(Grps) To UBound(Grps)
Key = Key & ";" & Arr(i, CLng(Grps(j)))
Next j
Key = Mid(Key, 2)
If Not Dic.Exists(Key) Then
ReDim Ar(0 To 0)
m = 0
For j = LBound(Sels) To UBound(Sels)
ReDim Preserve Ar(0 To m)
If IsNumeric(Sels(j)) Then
Ar(m) = Arr(i, CLng(Sels(j)))
Else
Select Case Split(Sels(j), "(")(0)
Case "SUM"
Ar(m) = Arr(i, CLng(Split(Split(Sels(j), "(")(1), ")")(0)))
Case "COUNT"
Ar(m) = 1
End Select
End If
m = m + 1
Next j
Dic(Key) = Ar
Else
Br = Dic(Key)
For j = LBound(Sels) To UBound(Sels)
If IsNumeric(Sels(j)) Then
Else
Select Case Split(Sels(j), "(")(0)
Case "SUM"
Br(j) = Br(j) + Arr(i, CLng(Split(Split(Sels(j), "(")(1), ")")(0)))
Case "COUNT"
Br(j) = Br(j) + 1
End Select
End If
Next j
Dic(Key) = Br
End If
Next i
DesRange.Resize(Dic.Count, UBound(Sels) + 1).Value = _
Application.Rept(Dic.items, 1)
Set Dic = Nothing
End Sub
20170928xlVBA自定义分类汇总的更多相关文章
- 20170711xlVBA自定义分类汇总一例
Public Sub CustomSubTotal() AppSettings On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- GitHub上史上最全的Android开源项目分类汇总
今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...
- Android 开源项目分类汇总(转)
Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...
- Android 开源项目分类汇总
Android 开源项目分类汇总 Android 开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView ...
- Android开源项目分类汇总【畜生级别】[转]
Android开源项目分类汇总 欢迎大家推荐好的Android开源项目,可直接Commit或在 收集&提交页 中告诉我,欢迎Star.Fork :) 微博:Trinea 主页:www.t ...
- Android开源项目分类汇总[转]
Android开源项目分类汇总 如果你也对开源实现库的实现原理感兴趣,欢迎 Star 和 Fork Android优秀开源项目实现原理解析欢迎加入 QQ 交流群:383537512(入群理由需要填写群 ...
- Android开源项目分类汇总【畜生级别】
From :http://blog.csdn.net/forlong401/article/details/25459403?c=6c4cd677a617db4655988e41ee081691#t7 ...
- Excel分类汇总与数据有效性
分类汇总就是把一些数据按照一个标准进行分类,然后按照相应的汇总方式进行汇总. 使用分类汇总之前先排序,否则汇总会出现很多类. 看如上这个表,如果按照所属区域分类,然后按照金额的总和汇总,在汇总之前就要 ...
随机推荐
- Restful framework【第十二篇】版本控制
简单使用 -drf版本控制 -在setting中配置 'DEFAULT_VERSION': 'v1', # 默认版本(从request对象里取不到,显示的默认值) 'ALLOWED_VERSIONS' ...
- 弄懂linux shell对包含$的变量的执行过程?
参考: http://www.linuxidc.com/Linux/2012-04/58095.htm 在包含变量的命令中, 命令是怎么执行的呢? 首先, 它会原封不动的, 只是按原样替换变量的内容. ...
- ZOJ 3829 Known Notation(贪心)题解
题意:给一串字符,问你最少几步能变成后缀表达式.后缀表达式定义为,1 * 1 = 1 1 *,题目所给出的字串不带空格.你可以进行两种操作:加数字,交换任意两个字符. 思路:(不)显然,最终结果数字比 ...
- (zhuan) LSTM Neural Network for Time Series Prediction
LSTM Neural Network for Time Series Prediction Wed 21st Dec 2016 Neural Networks these days are the ...
- HBase与列存储
传统的行存储和(HBase)列存储的区别 1.为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的 ...
- python学习 day15打卡 初识面向对象
本节主要内容: 1.面向对象和面向过程 2.面向对象如何编写 3.面向对象和面向过程的对比 4.面向对象的三大特征 一.面向对象和面向过程(重点理解) 1.面向过程:一切以事物的流程为核心.核心是&q ...
- python接口测试模版
"""Test case implementation""" import sys import functools import diff ...
- jdk1.8和tomcat9.0、maven3.5.0配置教程
一.jdk环境变量 JAVA_HOME :C:\Program Files\Java\jdk1.8.0_77(这个是你安装JDK时的路径,按照实际情况改成你自己的目录) CLASSPATH: .; ...
- unity 截图 压缩 处理
/****************************************************** unity屏幕截图,并转换成Base64码* 作者: lyb* 日期:2017年7月25 ...
- 【BZOJ】4542: [Hnoi2016]大数
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4542 给定一个由数字构成的字符串${S_{1,2,3,...,n}}$,一个正素数$P$, ...