excel如何进行多条件统计
发布时间:2023-07-02 20:45:48
这是在知乎上看到的一个问题,我试着用VBA来解决。欢迎大家就自已使用Excel中遇到的问题或想要的解决方案提问,我将尽力解答。
问题:怎么用EXCEL多条件统计重复次数计数?如下所示,要统计每个试室都有什么专业(F),每个专业多少人,用左边的表生成右边的表(生成M、N、列就行),数据大概4W多条,需要考虑效率。怎么能做出来?VBA,公式啥的行,不想用筛选。
由于没有原始表格,我自已仿照做了一个示例数据表,如下所示。
提问者只要求能够生成右边表格的右侧3列,中为列L、列M、列N,这样的话列I、列J、列K中的数据是应该都有了,这样相对来说更容易一些。由于我没有原始表格,所以我将右边表格的全部6列都使用VBA来生成。
分析左侧的数据表,统计每个试室有什么专业、每个专业有多少人,实际上就是求每个试室每个专业的不重复数。因此,我将场次、考场编码、试室、试室编码、报考专业连接起来,单独放置在列G中,将它们作为字典的键值,这样就得到了不重复的数据。在填充字典键的同时,统计重复的数据,作为键的元素值,从而得到了每个试室每个专业的人数。然后,再将字典键进行拆分,输入到右侧的场次、考场编码、试室、试室编码、报考专业对应单元格中,并将对应的元素值输入到报考人数对应的单元格,这样就得到了统计数据。
完整的VBA代码如下:
Sub StatisticsData()
Dim lngLastRow As Long
Dim rng As Range
Dim myDict As Variant
Dim myKey As Variant
Dim str() As String
Dim num As Long
‘获取数据最后一行
lngLastRow = Range(“A” &Rows.Count).End(xlUp).Row
‘将数据区域单元格中的场次考场编码试室试室编码报考专业数据组合
‘将组合后的数据临时存放在G列
‘每个单元格数据之间用空格分开
‘方便后面拆分
For Each rng In Range(“A2:A” & lngLastRow)
With rng
.Offset( , 6) = .Offset( , ) +” ” + _
.Offset( , 1) +” ” + _
.Offset( , 2) +” ” + _
.Offset( , 3) +” ” + _
.Offset( , 5)
End With
Next rng
‘字典
Set myDict =CreateObject(“scripting.dictionary”)
‘遍历列G中的数据并将其放置在字典中
‘字典中键值为不同的数据组合
‘字典中键对应的值为每种数据组合的数量,即专业报考人数
For Each rng In Range(“G2:G”& lngLastRow)
With myDict
If Not .exists(rng.Value) Then
.Item(rng.Value) = 1
Else
.Item(rng.Value) =.Item(rng.Value) + 1
End If
End With
Next rng
‘清除临时存放在列G中的数据
Range(“G2:G” &lngLastRow).Clear
‘获取字典键
myKey = myDict.keys
‘遍历字典键
For num = To UBound(myKey)
‘拆分字典键中的字符
‘分别对应场次考场编码试室试室编码报考专业
str = Split(myKey(num))
‘取出相应的值并放置在相应的单元格
With Range(“I2”)
.Offset(num, ) = str( )
.Offset(num, 1) = str(1)
.Offset(num, 2) = str(2)
.Offset(num, 3) = str(3)
.Offset(num, 4) = str(4)
.Offset(num, 5) =myDict.Item(myKey(num))
End With
Next num
‘获取统计区域的数据最后一行
lngLastRow = Range(“I” &Rows.Count).End(xlUp).Row
With Range(“I1:N” &lngLastRow)
‘对统计区域的数据排序
.Sort _
Key1:=”场次”, Order1:=xlAscending, _
Key2:=”考场编码”, Order2:=xlAscending, _
Key3:=”试室编码”, Order3:=xlAscending, _
Header:=xlYes
‘调整列宽
.Columns.AutoFit
End With
Set myDict = Nothing
End Sub
代码中有相应的注释,可以参照理解。
猜你喜欢
- 1、随便打开一个文件。这个文件无关紧要,只是一个工具。 2、在word的菜单栏中点击文件,然后选择打开。 &nbs
- Word制作工资条怎么做?工资条的制作方法有很多,我们不仅可以用Excel表格来制作,还可以使用Word文档制作哦,那么应该如何操作呢?其实
- 通常情况下,我们在word排版过程中使用一种页面版式(横版/竖版)即可。但在某些特殊情况下,我们可能会需要在竖版页面中间插入一页或多页横版页
- word文字怎么对齐?Word排版中会遇到文字难以对齐的问题,影响文档美观,遇到这样的情况如何应对呢?这边教你小技巧,轻松解决文字对齐问题。
- Win10 1909显卡内存提示不足该怎么办呢?针对这一问题,小编为大家带来了Win10 1909显卡内存提示不足的解决方法。Win10 1
- word2013中尾注和脚注如何快速相互转换?在我们的论文中有时候会把脚注的标注错误的标注到尾注中,那么像出现这样的情况,怎么才能快速完成转
- 由于工作的原因,经常需要用到Word软件进行文档的编辑排版。为了让文档内容更加的丰富多彩,常常需要在文档中加入一些诸如:波浪线、双直线、虚线
- 升级win 10后,点击要打开word却打不开了,需要怎么解决呢,今天,小编就教大家在Word中升级win10后出现打不开的解决方法。Wor
- Word 2003每次启动时都会自动切换到微软拼音输入法2003,若你常用不是拼音输入法,那就得重新切换一次,这就有点烦人了。能不能让Wor
- 发布后不久,Win10预览版也迎来了其新版本更新。许多用户发现,升级到9860版本后,已将一个名为“ RecoveryImage”的巨大文件
- 在使用word时,我们也许都遇到过一种特殊的查找替换的烦恼,就是想将一些文字批量替换成图片的情况。那么这个是不是就没法完成呢?非也。Word
- Excel中f4键按了没反应怎么办?excel表格在使用快捷键的时候,发现f4键按了没反应,该怎么办呢?下面我们就来看看Excel中F4键没
- Word可以算是一款经典的文档软件,还是有不少用户在使用其制作各种文档,不过有些小伙伴在使用Word时候却遇到过前面打字而后面的字不断消失的
- 如果要编辑数学公式,我们一般可能会想到用公式编辑器进行编辑,直到现在才发现原来word也是可以编辑数学公式的,这样子可比公式编辑器方便多了。
- 快捷键,又叫快速键或热键,指通过某些特定的按键、按键顺序或按键组合来完成一个操作,灵活运用快捷键,可以大大缩减工作时间,如果你是个电脑小白,
- Word作为文档编辑最常用的一款软件,强大的功能以及多样的素材让它深受用户的欢迎,一句完整的句子中必不可少的就是符号了,当然,我们也可以用符
- 求差 和等运算 似乎只有通过公式 并没有一步到位的快捷键 不过要说快捷的话 求出一个直接下拉 下面的就会直接算出第一步:打开Excel表格,
- 我们在使用Word制作和编辑表格时,经常需要删除表格中的整行或整列。下面小编就介绍一下在Word中删除整行或整列的方法,希望能对大家有所帮助
- 在使用wps文字的时候,为了让文章更加有质感,可以添加背景图片,这样不会显得太单调。那么问题来了,在WPS文字中,如何设置背景?1、首先我们
- 有不少用户更新升级win10系统之后,发现资源管理器经常卡死无响应,导致无法进行电脑操作,无法正常使用计算机查看电脑中磁盘内的数据资料。遇到