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分类汇总与数据有效性
分类汇总就是把一些数据按照一个标准进行分类,然后按照相应的汇总方式进行汇总. 使用分类汇总之前先排序,否则汇总会出现很多类. 看如上这个表,如果按照所属区域分类,然后按照金额的总和汇总,在汇总之前就要 ...
随机推荐
- 2018年11月20日 远交近攻 list1
list 列表用法 li=[1,2,3,"abc"] #列表中的元素,可以为数字或者字符串或者布尔值或者就是列表等,所有都能放进去 #列表中也能嵌套列表 pi=[1,2,3,[2, ...
- Spring 学习——Spring JSR注解——@Resoure、@PostConstruct、@PreDestroy、@Inject、@Named
JSR 定义:JSR是Java Specification Requests的缩写,意思是Java 规范提案.是指向JCP(Java Community Process)提出新增一个标准化技术规范的正 ...
- oracle 之 基础操作
//删除存在的表空间及数据 drop tablespace TS_YYGL including contents and datafiles 若是出现了提示 错误 导致无法全部删除,那么就执行以下语句 ...
- 强化学习策略梯度方法之: REINFORCE 算法(从原理到代码实现)
强化学习策略梯度方法之: REINFORCE 算法 (从原理到代码实现) 2018-04-01 15:15:42 最近在看policy gradient algorithm, 其中一种比较经典的 ...
- ZOJ 2112 Dynamic Rankings(树状数组+主席树)
题意 \(n\) 个数,\(m\) 个操作,每次操作修改某个数,或者询问某个区间的第 \(K\) 小值. \(1 \leq n \leq 50000\) \(1 \leq m \leq 10000\) ...
- HDU 5245 Joyful(期望)
http://acm.hdu.edu.cn/showproblem.php?pid=5245 题意: 给出一个n*m的矩阵格子,现在有k次操作,每次操作随机选择两个格子作为矩形的对角,然后将这范围内的 ...
- HDU 3848 CC On The Tree(树形dp)
http://acm.hdu.edu.cn/showproblem.php?pid=3848 题意: 求一棵树上两个叶子结点之间的最短距离. 思路: 两个叶子节点之间一定会经过非叶子节点,除非只有两个 ...
- Python open 读写小栗子
1.样本内容 A.txt 2.上代码: f=open(r'E:\A.txt','r') boyA=[] boyB=[] count = for each_line in f: ]!='======': ...
- react native 第三方组件react-native-swiper 轮播组件
github地址:https://github.com/leecade/react-native-swiper 使用方法:安装:npm i react-native-swiper –save 查看模块 ...
- c# 通过反射输出成员变量以及成员变量的值
/*** @Author rexzhao* 工具类 仅限于* public variable*/using System.Collections;using System.Collections.Ge ...