请教用VBA对Excel表格中的数据进行简单统计

请教用VBA对Excel表格中的数据进行简单统计,第1张

在宏里面写excel公式
对A列所有数据求和,把和赋值给a,如下写:
a=worksheetfunctionsum("a:a")

使用count求个数
a=worksheetfunctioncount("a:a")

其余类似

提示:数组公式 自行baidu搜索方法

SUBTOTAL函数是功能强大的分类汇总统计函数,有两个参数,第一个为1到11或101到111的数字,第二个为数据区域。
SUBTOTAL函数因为其第一个参数的从1、2、3。。。11变化而功能依次为:算术平均值函数、数值计数函数、非空单元格计数函数、最大值函数、最小值函数等等,其效果与算术平均值、数值计数、非空单元格计数等函数相同。具体情况如下表:
第一个参数值 相当于函数
1 AVERAGE
2 COUNT
3 COUNTA
4 MAX
5 MIN
6 PRODUCT
7 STDEV
8 STDEVP
9 SUM
10 VAR
11 VARP
举例:A2:C9为数据区
在A10输入“=SUBTOTAL (1,A2:C9)”,结果显示为数据区的算术平均值;
在A11输入“=SUBTOTAL (2,A2:C9)”,结果显示为数据区的数值个数;
在A12输入“=SUBTOTAL (3,A2:C9)”,结果显示为数据区的非空单元格数量;
在A13输入“=SUBTOTAL (4,A2:C9)”,结果显示为数据区的最大值,。以此类推。
5``````最小值
6``````乘积
7``````基于样本估算标准偏差
8``````基于以参数形式给出的整个样本总体计算标准偏差
9``````求和
10``````
11``````计算基于整个样本总体的方差

好像没有什么好的简单方法,vba当然能做:
len()函数判断下第一个单元格字符长度,然后对合并后单元格的前几个字符进行格式设置
ActiveCellCharacters(Start:=1, Length:= )Font
Underline = xlUnderlineStyleSingle

要用vba自定义函数
代码是:
Public Function sumcolor(rge as range)
For Each c In rge
If cFontColorIndex >0 Then s = s + c
Next
sumcolor = s
End Function
假设数据是在A2:K100
在L2输入
=sumcolor(A2:K2)
下拉
便会显示每一行的个数(颜色字)
或在任何一格输入:
=sumcolor(A2:K100)
便会显示全部99行的总个数
另一方法 是 名称-定义-getcell
但要用很多辅助列, 此题不太适合
--------------------------------------------
最后要统计每一行有多少个数据被作上标记, VBA内的
If cFontColorIndex >0 Then s = s + c
改成:
If cSuperscript = True Then s = s + c
便可

你想得太复杂了。不要用函数就可以实现。
可以选择指定的单元格(比如一列),右键,设置单元格格式,字体,下划线。这样设置就可以了
可以用“条件格式”,在“格式”命令下。将指定的范围内的值指定显示格式。不光是下划线,还可以用不同颜色表示,更方便。

excelvba如何统计在列表框中选择的行数?
方法一:1 首先在 Excel 中插入一个控件:列表框;
2 然后右键单击列表框,选择“查看代码”,在d出的 VBA 编辑窗口中,输入以下代码:Private Sub ListBox1_Click()
MsgBox ListBox1ListCount
End Sub3 保存代码,在列表框中选择行,即可显示选择的行数。
方法二:1 在 Excel 中插入一个控件:列表框;
2 在 Excel 中插入一个按钮,右键单击按钮,选择“查看代码”,在d出的 VBA 编辑窗口中,输入以下代码:
Private Sub CommandButton1_Click()
MsgBox ListBox1ListCount
End Sub
3 保存代码,单击按钮,即可显示选择的行数。

Sub test()
Dim brr(), i&, j&,iRow&,sr$,p%
iRow = Range("A65536")End(3)Row '取得A列最下方非空行号
arr = Range("A1:A" & iRow) 'A列内容赋值给类数组变量arr
ReDim brr(1 To UBound(arr), 1 To 1) '根据arr大小重定义动态数组brr大小
‘brr用来盛放目标结果
For i = 1 To UBound(arr)
sr = arr(i, 1) 'arr中的元素循环赋值给临时变量sr
If Len(sr) Then '循环跳过空值,即A列中的空白单元格
p = InStr(sr, "_") '查找sr中下短横的位置
If p Then
ss = Mid(sr, 1, p - 1) '截取下短横前的字符,结果传递给临时变量ss
Else
ss = sr '若p=0则把sr的内容传递给ss
End If
End If
brr(i, 1) = ss '结果写入数组brr的相应位置,每行结果与arr的行号一一对应
Next i
Range("B1")Resize(UBound(brr), 1) = ""
Range("B1")Resize(UBound(brr), 1) = brr '数组输出到工作表
End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13394893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存