Excel·VBA数组平均分组问题

看到一个帖子《excel吧-数据分组问题》,对一组数据分成4组,使每组的和值相近

上一篇文章《Excel·VBA数组分组问题》,解决了这个帖子问题的第1步,即获取所有数组分组形式的问题

接下来要获取分组和值最相近的一组,只需计算每种分组形式的方差,获取方差最小的及其对应的行号,就可获取分组和值最相近的一组

先调用函数获取和值计算方差及对应的行号,再调用函数获取字符串组成形式,输出行号对应的结果

vbnet 复制代码
Sub 平均分组()
    '计算方差vba工作表函数Var_P,与365VARPA函数等价
    Dim arr, brr, crr, b, i&, j&, f, min_f
    arr = [a1].CurrentRegion: m = 4  '待分组数组,分为m组
    brr = 数组分组(arr, m, 1): crr = 数组分组(arr, m, 2): tm = Timer
    For i = 1 To UBound(brr)
        b = Application.Index(brr, i): f = WorksheetFunction.Var_P(b)
        If Len(min_f) = 0 Then min_f = f: j = i
        If min_f > f Then min_f = f: j = i
    Next
    [c1].Resize(1, m) = Application.Index(crr, j)
    Debug.Print "累计用时" & Format(Timer - tm, "0.00")  '耗时
End Sub
  • 由于这组数据数值差异较小,因此数组分组函数last_row参数为1,仅计算最后一种分组形式即可获取方差最小的结果。方差最小值为85042.60
9个元素分成4组 last_row为1 last_row为0
变量j的值 2458 13378
耗时秒数 11.79 71.33
相关推荐
骆驼爱记录15 小时前
Word题注编号间距调整4种方法
自动化·word·excel·wps·新人首发
Eiceblue18 小时前
两种实用方法删除 Excel 重复行:Python + VBA
开发语言·python·excel
m5655bj1 天前
通过 Python 将 Excel 转换为 TXT文本
开发语言·python·excel
要做一个小太阳2 天前
excel VLOOKUP函数
excel
博风2 天前
用excel写一个年会抽奖的小程序
excel
LAM LAB2 天前
【VBA/ppt】设置选中字体为红色
powerpoint·vba·wps
零零发聊技术2 天前
Excel实现数字与列标之间的转换
excel·vba·office
老吴学AI2 天前
第 3 节 | 视觉魔术:Excel 如何用颜色和位置“控制”读者视线
信息可视化·数据分析·excel·职场·数据可视化·报表制作·用数据讲故事
零零发聊技术2 天前
将电脑Excel文件恢复到几天前的版本
文件恢复·excel
罗政3 天前
一键对多个Excel文件进行差异内容提取分析+显示差值
excel