Foxtable(狐表)用户栏目专家坐堂 → [求助]代码简化后运行时间太长?


  共有4052人关注过本帖树形打印复制链接

主题:[求助]代码简化后运行时间太长?

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/23 20:42:00 [显示全部帖子]

肯定有问题

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/23 22:42:00 [显示全部帖子]

1、标准差的计算建议网上搜索算法自己写一个函数处理,不要在循环里使用Tables("成绩库").Aggregate、Tables("总分"& tjnj &"级有效分").Aggregate这种方式
2、这种代码和循环没有任何关系,没有必要放到循环里

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
3、循环里的处理和其它表有什么关系,为什么要遍历所有表

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
4、这种完全一样的循环,合并到一起即可,没有必要分开多循环一遍,把红色框内容去掉

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
5、这种遍历所有表的操作,看代码这些表应该都有相同的列名和填充的数据,就没有必要遍历所有表每个表重新计算一遍了吧,只需要处理一个表,然后把这个表数据填充到其它表即可

图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看
6、这种操作为什么不在前面生成数据的时候就直接round确定小数位数,还要另外循环一次处理?

图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看
7、如果只是简单的红色加粗,建议到全局表事件drawcell处理

图片点击可在新窗口打开查看此主题相关图片如下:6.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2021/2/23 22:42:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/25 8:31:00 [显示全部帖子]

看4楼1、2、5.

另外为什么dhs要遍历2次

                    For Each dh As String In dhs
                        For Each lm3 As String In lm3s
                            For j As Integer = 0 To dhs.length - 1

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/25 10:59:00 [显示全部帖子]

ResumeRedraw恢复绘制表格
StopRedraw暂停绘制表格

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/25 11:36:00 [显示全部帖子]

不是要加这个,而是代码里这个导致白板,因为暂停绘制表格就是这种情况

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/25 23:27:00 [显示全部帖子]

应该是列名不正确,不存在这些列

msgbox(dhs(j) & "平均分之和")
msgbox(dhs(j) & "标准差之和")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/27 17:21:00 [显示全部帖子]

找一下规律,比如这些红色单元格序号都是有值的,根据序号判断清除

DataTables("订单").ReplaceFor("目标列"nothing"序号 is not null")
DataTables("订单").ReplaceFor("分数线列"nothing"序号 is not null")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/8 20:09:00 [显示全部帖子]

For i As Integer = 0 To 26
if Tables("总分分数段").findrow("单位 = '全区合计' And 分数段" & (i+1) & " Is not null") = -1
       Tables("总分分数段").Cols.Remove("分数段" & (i+1))  ‘条件:单位 = '全区合计' And "分数段" & (i+1)  为空值
end if
Next

 回到顶部