楼主: 等风来撒
4386 6

[问答] vba标准差的计算 [推广有奖]

  • 0关注
  • 0粉丝

博士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
500 个
通用积分
35.5521
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
2497 点
帖子
220
精华
0
在线时间
232 小时
注册时间
2014-1-5
最后登录
2023-10-30

10论坛币
QQ截图20170111195648.png

如图所示,程序是个每秒都会自动添加一列数据的记录的东西,一旦13列数字到了10万,那么把这些数字都归到1组,组数记录在14列,现在想在15列求每一组数据中心化后的数值,就是第10列每一个数除以它所在组(红圈和蓝圈)的标准差。我想每当程序刷新到每一组最后一个数据的时候(也就是第13列出现10万的时候),第15列就能算出我所有要的东西。

请求高手。。。本人想了几天实在没想懂

附上代码....写的很粗糙....希望高手们能看懂指引一下啊...
Sub 记录()
Dim a As Integer
Dim sumvol As Integer
Dim accum As Integer
Dim g As Integer
g = Cells(Rows.Count, 14).End(xlUp).Row + 1
a = Sheet1.Cells(Rows.Count, 6).End(xlUp).Row
    For i = 6 To 9
        Sheet1.Cells(a, i).Offset(1, 0) = Sheet1.Cells(3, i).Value
    Next
    Sheet1.Cells(a + 1, 10) = Sheet1.Cells(a + 1, 6) - Sheet1.Cells(a, 6)
    Sheet1.Cells(a + 1, 11) = Sheet1.Cells(a + 1, 7) 'Sheet1.Cells(a, 7)
    If Sheet1.Cells(a + 1, 11).Value + Sheet1.Cells(a, 12).Value < 100000 Then
        Sheet1.Cells(a + 1, 12) = Sheet1.Cells(a, 12) + Sheet1.Cells(a + 1, 11)
        Sheet1.Cells(a + 1, 13) = Sheet1.Cells(a + 1, 12)
    Else
        Sheet1.Cells(a + 1, 12) = Sheet1.Cells(a, 12) + Sheet1.Cells(a + 1, 11) - 100000
        Sheet1.Cells(a + 1, 13) = 100000
    End If
    If Sheet1.Cells(a, 13) < 100000 Then
        If Sheet1.Cells(a, 14) = "" Then
            Sheet1.Cells(a + 1, 14) = 1
        Else
        Sheet1.Cells(a + 1, 14) = Sheet1.Cells(a, 14)
        End If
    Else
        Sheet1.Cells(a + 1, 14) = Sheet1.Cells(a, 14) + 1
      End If
   
Application.OnTime Now + TimeValue("00:00:01"), "记录"
End Sub

最佳答案

Dekenstr 查看完整内容

试试看,往第11列里填数。
关键词:VBA 标准差 最后一个 数据中心 如图所示 标准差 如图所示 程序 红圈 记录
这个...........
沙发
Dekenstr 发表于 2017-1-25 15:03:22 |只看作者 |坛友微信交流群
试试看,往第11列里填数。
Book1.zip (17.79 KB) 本附件包括:
  • Book1.xlsm

使用道具

藤椅
Dekenstr 发表于 2017-1-25 16:42:07 |只看作者 |坛友微信交流群
我看第11列是数字输入,12-15列都是计算。

我在想是不是直接在内存里用VBA计算第12-15列更快更干净一些?

算法上可能要找一下方差的递归公式比较方便。

这两天上班忙,有空帮你看一下。

使用道具

板凳
等风来撒 发表于 2017-1-25 16:57:18 |只看作者 |坛友微信交流群
Dekenstr 发表于 2017-1-25 16:42
我看第11列是数字输入,12-15列都是计算。

我在想是不是直接在内存里用VBA计算第12-15列更快更干净一些 ...
谢谢啊,我是新手,所以都是很水的一些逻辑写的......等高手您回复哈

使用道具

报纸
等风来撒 发表于 2017-1-26 18:39:24 |只看作者 |坛友微信交流群
Dekenstr 发表于 2017-1-25 23:23
试试看,往第11列里填数。
请问下..这个程序我放到我的宏里面跑不动呀...?

使用道具

地板
Dekenstr 发表于 2017-1-26 19:15:54 |只看作者 |坛友微信交流群
要放在SHEET1里的SHEET CHANGE ()程序里。
1.png

使用道具

7
等风来撒 发表于 2017-1-27 16:15:53 |只看作者 |坛友微信交流群
Dekenstr 发表于 2017-1-26 19:15
要放在SHEET1里的SHEET CHANGE ()程序里。
好了,谢谢啊,又可以进行下一步操作了

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 08:40