Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2344|回复: 5

[已解决]修改代码

[复制链接]
发表于 2016-6-11 22:50 | 显示全部楼层 |阅读模式
求助:将aa、xx合并成一个过程
说明:aa过程是已经做好的
用代码计算黄色数据_1.rar (11.1 KB, 下载次数: 8)
发表于 2016-6-11 22:56 | 显示全部楼层
你的aa这个代码有问题吧?请把aa这个模块更新下!
回复

使用道具 举报

 楼主| 发表于 2016-6-11 23:08 | 显示全部楼层
老司机带带我 发表于 2016-6-11 22:56
你的aa这个代码有问题吧?请把aa这个模块更新下!

先把黄色数据清除。
B数组,同列上移一行,运行过程aa,看结果。
回复

使用道具 举报

发表于 2016-6-11 23:14 | 显示全部楼层
本帖最后由 老司机带带我 于 2016-6-11 23:15 编辑

上移运行之后结果如图,然后再计算15-20行?
QQ截图20160611230607.jpg
回复

使用道具 举报

 楼主| 发表于 2016-6-11 23:15 | 显示全部楼层
老司机带带我 发表于 2016-6-11 22:56
你的aa这个代码有问题吧?请把aa这个模块更新下!

aa过程运行后BB数组具体在哪一行,运行前不知道(动态的),xx过程中13 to 22也不能定死,要改了。
回复

使用道具 举报

发表于 2016-6-11 23:19 | 显示全部楼层    本楼为最佳答案   
你看这样行了没!
  1. Sub aa()
  2. arr = [a5:a20]
  3. brr = [b5:b20]
  4. For i = 1 To UBound(brr)                        '寻找B数组的开始行号和结束行号
  5.     If brr(i, 1) = "" Then
  6.         If i1 = 0 And brr(i + 1, 1) <> "" Then
  7.             i1 = i + 1                          'B数组的开始行号
  8.         ElseIf i1 > 0 Then
  9.             i2 = i - 1: Exit For                'B数组的结束行号
  10.         End If
  11.     End If
  12. Next

  13. ReDim crr(1 To i2 - i1 + 1, 1 To 1)             '声明动态数组变量crr 1 to 4
  14. ReDim drr(1 To i2 - i1 + 1, 1 To 1)             '声明动态数组变量drr
  15. n = 0
  16. For i = i1 To i2
  17.     n = n + 1
  18.     drr(n, 1) = brr(i, 1)                       'B数组写入drr
  19. Next

  20. Max = 0
  21. For i = 1 To UBound(arr) - n + 1                '循环 维度的最大值13-n4的第一行
  22.     For ii = 1 To n                             '循环 1 to 4
  23.         crr(ii, 1) = arr(i + ii - 1, 1)         '将A数组1 to 4写入crr
  24.     Next
  25.     xsdu = Application.Correl(crr, drr)         '启用Correl(crr, drr)函数,并将结果写入xsdu(变量)
  26.     If Max < xsdu Then Max = xsdu: i0 = i       '自Max=0开始降序排列xsdu变量,最后将最大xsdu写入Max,i0 = i是对应行的意思
  27. Next

  28. [b24] = Max                                     '将结果写入[b24]
  29. [b5:b20] = ""                                   '清空[b5:b20]
  30. Range("b4").Offset(i0, 0).Resize(n, 1) = drr    '将B数组写入Range("b4")开维的比对开始范围(i0, 0)的n + 1
  31. Call xx

  32. End Sub
  33. Sub xx()
  34.     Dim i&, x%, a As Double, b As Double, c As Double, n&
  35.     x = 3
  36.     With Sheet1
  37.         n = .Cells(22, 2).End(xlUp).Row + 1
  38.         For i = n To 20
  39.             a = Application.Evaluate("INDEX(LINEST(B" & i - 4 & ":" & "B" & i - 1 & ",A" & i - 4 & ":A" & i - 1 & "^{1,2},TRUE,TRUE),1,1)")
  40.             b = Application.Evaluate("INDEX(LINEST(B" & i - 4 & ":" & "B" & i - 1 & ",A" & i - 4 & ":A" & i - 1 & "^{1,2},TRUE,TRUE),1,2)")
  41.             c = Application.Evaluate("INDEX(LINEST(B" & i - 4 & ":" & "B" & i - 1 & ",A" & i - 4 & ":A" & i - 1 & "^{1,2},TRUE,TRUE),1,3)")
  42.             .Range("B" & i) = a * .Range("A" & i) ^ 2 + b * .Range("A" & i) + c
  43.             x = x + 1
  44.         Next
  45.     End With
  46. End Sub
复制代码

用代码计算黄色数据_1.rar

13.71 KB, 下载次数: 8

评分

参与人数 1 +6 收起 理由
759857387 + 6 很给力

查看全部评分

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 12:29 , Processed in 0.464565 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表