
Excel 字典+数组汇总分类汇总
左侧部分1位院士数据,要变成右侧2数据类型,数据1汇总,数据2做表头,数据3汇总对应数据2值。总共需要分几步完成,使用方法...
左侧部分1位院士数据,要变成右侧2数据类型,数据1汇总,数据2做表头,数据3汇总对应数据2值。总共需要分几步完成,使用方法
展开
4个回答
展开全部
你确定要使用excel VBA字典技术来做吗?根据你表格需要达到的汇总要求,我觉得还是使用数据透视表比较方便,VBA字典就要麻烦的多了。
具体插入数据透视表的方法是,选中a、b、c三列数据,建立数据透视表,将数据1字段拖入行标签,将数据2字段拖入列标签,将数据3字段拖入数值区域,就可以轻松的做出分类汇总,然后再选项中去掉行汇总和列汇总。
具体插入数据透视表的方法是,选中a、b、c三列数据,建立数据透视表,将数据1字段拖入行标签,将数据2字段拖入列标签,将数据3字段拖入数值区域,就可以轻松的做出分类汇总,然后再选项中去掉行汇总和列汇总。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选择A1:C13数据区域,在“插入”选项下的“数据透视表”中,并选择新数据透视表的位置在本表的E1单元格;
将数据1拖入列内容,数据2拖入行内容,将数据3拖入计算项,求和。
将数据1拖入列内容,数据2拖入行内容,将数据3拖入计算项,求和。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单方便的方法就是用数据透视表
但非要用字典+数组的话
第一步是把1表放进数组
字典出第一列/第二列
再定义出2表数组
将左侧/顶端KEY写入
最后对照数组将2表完善
但非要用字典+数组的话
第一步是把1表放进数组
字典出第一列/第二列
再定义出2表数组
将左侧/顶端KEY写入
最后对照数组将2表完善
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Sub 分类汇总()
Dim d1 As New Dictionary
Dim d2 As New Dictionary
'Dim d1 As Object
'Dim d2 As Object
Dim arr, brr
Dim i
arr = Range("a1").CurrentRegion
ReDim brr(1 To UBound(arr), 1 To UBound(arr))
'Set d1 = CreateObject("Scripting.Dictionary")
'Set d2 = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
If Not d1.Exists(arr(i, 1)) Then
d1(arr(i, 1)) = d1.Count + 1
End If
Next
For i = 2 To UBound(arr)
If Not d2.Exists(arr(i, 2)) Then
d2(arr(i, 2)) = d2.Count + 1
End If
Next
Range("e2").Resize(d1.Count, 1) = Application.WorksheetFunction.Transpose(d1.Keys)
Range("f1").Resize(1, d2.Count) = d2.Keys
For i = 2 To UBound(arr)
x = d1(arr(i, 1))
y = d2(arr(i, 2))
brr(x, y) = brr(x, y) + arr(i, 3)
Next
Range("f2").Resize(d1.Count, d2.Count) = brr
End Sub
Dim d1 As New Dictionary
Dim d2 As New Dictionary
'Dim d1 As Object
'Dim d2 As Object
Dim arr, brr
Dim i
arr = Range("a1").CurrentRegion
ReDim brr(1 To UBound(arr), 1 To UBound(arr))
'Set d1 = CreateObject("Scripting.Dictionary")
'Set d2 = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
If Not d1.Exists(arr(i, 1)) Then
d1(arr(i, 1)) = d1.Count + 1
End If
Next
For i = 2 To UBound(arr)
If Not d2.Exists(arr(i, 2)) Then
d2(arr(i, 2)) = d2.Count + 1
End If
Next
Range("e2").Resize(d1.Count, 1) = Application.WorksheetFunction.Transpose(d1.Keys)
Range("f1").Resize(1, d2.Count) = d2.Keys
For i = 2 To UBound(arr)
x = d1(arr(i, 1))
y = d2(arr(i, 2))
brr(x, y) = brr(x, y) + arr(i, 3)
Next
Range("f2").Resize(d1.Count, d2.Count) = brr
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询