Excel精英培训网

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

[已解决]模块:原因码,求代码优化

[复制链接]
发表于 2021-11-1 19:58 | 显示全部楼层 |阅读模式
求各位老师抽空帮忙代码优化
因本人是新手,感觉代码写的太复杂了,
原代码在模块:原因码
最佳答案
2021-11-1 21:45
本帖最后由 cutecpu 于 2021-11-2 01:51 编辑

我从 '變量定義:   n(行號),x(數據源循環總行數) ,t1(計算時間) ...........  
以下代码开始改写

Sub demo3()

   Dim n, x,t1, t2, t3, t4, t5, T, F, L, run1, run2

   n = 2: x =Sheets("研磨数据源").[A1].end(3).row
   t1 =Sheets("研磨粉run").[A65536].End(xlUp)

   WithSheets("研磨数据源")

   For n = nTo x
      t2 =.Cells(n, 79).Value
      If t1<> t2 Or t2 = "" Or .Cells(n, 27).Value <> 1 Then GoTo 1
      If.Cells(n, 16).Value = .Cells(n - 1, 16).Value Then
         run1= .Cells(n - 1, 27).Value
         run2= .Cells(n - 1, 28).Value
        Select Case run1
           Case Is = run2
               T = T + 1: s = "研磨液达标"
           Case Is < run2
              F = F + 1: s = "研磨液不达标"
           Case Is > run2
              L = L + 1: s = "研磨液超标"
         EndSelect
        .Cells(n - 1, 26) = s
         t3 =t3 + run2
         t4 =t4 + run1
      Else
         t5 =t5 + 1
         .Cells(n,28) = "研磨液达标?"
      End If
1: Next

   End With

   WithSheets("研磨粉run数")
     .[B65536].End(3).Resize(, 8) = Array(T, F, L, t4, t3, t4 / t3,"100%", t5)
     .Activate
   End With

End Sub



研磨粉run数.rar

39.1 KB, 下载次数: 2

 楼主| 发表于 2021-11-1 20:37 | 显示全部楼层
回复

使用道具 举报

发表于 2021-11-1 21:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 cutecpu 于 2021-11-2 01:51 编辑

我从 '變量定義:   n(行號),x(數據源循環總行數) ,t1(計算時間) ...........  
以下代码开始改写

Sub demo3()

   Dim n, x,t1, t2, t3, t4, t5, T, F, L, run1, run2

   n = 2: x =Sheets("研磨数据源").[A1].end(3).row
   t1 =Sheets("研磨粉run").[A65536].End(xlUp)

   WithSheets("研磨数据源")

   For n = nTo x
      t2 =.Cells(n, 79).Value
      If t1<> t2 Or t2 = "" Or .Cells(n, 27).Value <> 1 Then GoTo 1
      If.Cells(n, 16).Value = .Cells(n - 1, 16).Value Then
         run1= .Cells(n - 1, 27).Value
         run2= .Cells(n - 1, 28).Value
        Select Case run1
           Case Is = run2
               T = T + 1: s = "研磨液达标"
           Case Is < run2
              F = F + 1: s = "研磨液不达标"
           Case Is > run2
              L = L + 1: s = "研磨液超标"
         EndSelect
        .Cells(n - 1, 26) = s
         t3 =t3 + run2
         t4 =t4 + run1
      Else
         t5 =t5 + 1
         .Cells(n,28) = "研磨液达标?"
      End If
1: Next

   End With

   WithSheets("研磨粉run数")
     .[B65536].End(3).Resize(, 8) = Array(T, F, L, t4, t3, t4 / t3,"100%", t5)
     .Activate
   End With

End Sub



回复

使用道具 举报

发表于 2021-11-1 21:54 | 显示全部楼层
不会呀。我觉得你写的这个已经很厉害了呀。。你这都叫新手。叫我这真正的新手情何以堪。
回复

使用道具 举报

 楼主| 发表于 2021-11-2 07:56 | 显示全部楼层
心正意诚身修 发表于 2021-11-1 21:54
不会呀。我觉得你写的这个已经很厉害了呀。。你这都叫新手。叫我这真正的新手情何以堪。


回复

使用道具 举报

 楼主| 发表于 2021-11-2 08:01 | 显示全部楼层
cutecpu 发表于 2021-11-1 21:45
我从 '變量定義:   n(行號),x(數據源循環總行數) ,t1(計算時間) ...........  
以下代码开始改写 ...

搜狗截图20211102080123.png
回复

使用道具 举报

发表于 2021-11-2 08:27 | 显示全部楼层

WITH 和对象之间需要个空格

点评

感谢,感谢!  发表于 2021-11-2 12:29
回复

使用道具 举报

 楼主| 发表于 2021-11-2 08:34 | 显示全部楼层
本帖最后由 楚雪飞扬 于 2021-11-2 08:35 编辑
心正意诚身修 发表于 2021-11-2 08:27
WITH 和对象之间需要个空格

你不说,我都没注意到,眼瞎了
回复

使用道具 举报

 楼主| 发表于 2021-11-2 08:43 | 显示全部楼层
.[B65536].End(3).Resize(, 8) = Array(T, F, L, t4, t3, t4 / t3, "100%", t5)  这句益出

点评

t3 分母為0,看哪邊條件要改一下  发表于 2021-11-2 10:45
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 06:55 , Processed in 0.344932 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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