您的位置 首页 > 数码极客

做了数字编码表如何统计数据

在网上看到有网友求助:

1:根据单元格内的数字,自动分配到指定的后续单元格中用“1”显示并动态扩展,如下图:

2:对所有行进行汇总,并根据数据源进行动态扩展

3:对以上最后10行进行汇总,并根据数据源进行动态扩展

VBA 解决思路

1:根据第一条要求,先用for……next……函数调取A3到I22(动态)区域内的数值,用if函数与J2到AK2变革数字进行对比,当数值相等的时候,在相应的行列填 "1"。

2:第二个要求,用for循环对所有的列进行求和(调用Sum函数)

3:第三个要求,用获取最后一行的行数与最后一行的行数减去9,得出最后10行区域,然后进行求和。

代码如下:

Sub 自动填数()

A = False

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim n As Integer

Dim rng As Range

Range("j3:ak1000").Clear

For i = 3 To Range("a3").End(xlDown).Row

For j = 1 To 9

For k = 10 To 37

If Cells(i, j).Value = Cells(2, k).Value Then

Cells(i, k).Value = 1

End If

Next

Next

Next

n = Range("a3").End(xlDown).Row + 3

For k = 10 To 37

' For i = 3 To Range("a3").End(xlDown).Row

Set rng = Range(Cells(3, k), Cells(Range("a3").End(xlDown).Row, k))</BR> Cells(n, k) = A(rng)</BR> Set rng = Range(Cells(Range("a3").End(xlDown).Row - 9, k), Cells(Range("a3").End(xlDown).Row, k))</BR> Cells(n + 2, k) = A(rng)</BR> Next</BR>

A = True

End Sub

代码的结果演示如下:

涉及知识点:

1:for next 循环

2:if 循环

3:调用sum函数

PS:1:此方法是常规解法,虽然也能解决问题,但是程序运行速度慢。另外还有可以数组的解决方法(下期用数组),运行速度快。

2:A = False 表示关闭屏幕刷新,本文章展示的GIF,是没有关闭屏幕刷新的,有兴趣的人,可以复制一下代码,重新运行一下。看看效果,并体验一下,运行速度是否有提升。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“做了数字编码表如何统计数据”边界阅读