ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2333|回复: 14

[求助] 求大师帮我把代码简写一下

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-11 00:23 | 显示全部楼层 |阅读模式
简写代码                                    
捕获.PNG

筛选.rar

138.88 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2021-5-11 07:08 | 显示全部楼层
红色代码部分,替换下面的,供参考
r = 16
   For j = 21 To 44
    If Sheet3.Cells(j, 11) = "留" Then
        r = r + 5
        For i = r To r + 4
            Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '-※-1
        Next i
    End If
   Next j

   
   
    For i = 21 To 25
        If Sheet3.Cells(21, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '-※-1
    Next
    For i = 26 To 29
        If Sheet3.Cells(22, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '2
    Next
    For i = 30 To 33
        If Sheet3.Cells(23, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '3
    Next
    For i = 34 To 37
        If Sheet3.Cells(24, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '4
    Next
    For i = 38 To 41
        If Sheet3.Cells(25, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '5
    Next
    For i = 42 To 45
        If Sheet3.Cells(26, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '6
    Next
    For i = 46 To 49
        If Sheet3.Cells(27, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '7
    Next
    For i = 50 To 54
        If Sheet3.Cells(28, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '-※-8
    Next
    For i = 55 To 58
        If Sheet3.Cells(29, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '9
    Next
    For i = 59 To 62
        If Sheet3.Cells(30, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '10
    Next
    For i = 63 To 66
        If Sheet3.Cells(31, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '11
    Next
    For i = 67 To 70
        If Sheet3.Cells(32, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '12
    Next
    For i = 71 To 74
        If Sheet3.Cells(33, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '13
    Next
    For i = 75 To 78
        If Sheet3.Cells(34, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '14
    Next
    For i = 79 To 82
        If Sheet3.Cells(35, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '15
    Next
    For i = 83 To 86
        If Sheet3.Cells(36, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '16
    Next
    For i = 87 To 91
        If Sheet3.Cells(37, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '-※-17
    Next
    For i = 92 To 95
        If Sheet3.Cells(38, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '18
    Next
    For i = 96 To 99
        If Sheet3.Cells(39, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '19
    Next
    For i = 100 To 103
        If Sheet3.Cells(40, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '20
    Next
    For i = 104 To 107
        If Sheet3.Cells(41, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '21
    Next
    For i = 108 To 111
        If Sheet3.Cells(42, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '22
    Next
    For i = 112 To 115
        If Sheet3.Cells(43, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '23
    Next
    For i = 116 To 120
        If Sheet3.Cells(44, 11) = "留" Then Cells(i, 31).Value = Sheet2.Cells(i, "D").Value '-※-24
    Next

TA的精华主题

TA的得分主题

发表于 2021-5-11 07:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. r = 16
  2. For j = 21 To 44
  3.     If Sheet3.Cells(j, 11) = "留" Then
  4.         r = r + 5
  5.         Cells(r, 31).Resize(5, 1).Value = Sheet2.Cells(r, "D").Resize(5, 1).Value '-※-1
  6.     End If
  7. Next j
复制代码

TA的精华主题

TA的得分主题

发表于 2021-5-11 07:39 | 显示全部楼层
仅供参考
筛选.zip (122.4 KB, 下载次数: 11)

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-11 10:15 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-11 10:18 | 显示全部楼层
liulang0808 发表于 2021-5-11 07:08
红色代码部分,替换下面的,供参考
r = 16
   For j = 21 To 44

老大,,结果不对喃

TA的精华主题

TA的得分主题

发表于 2021-5-11 10:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
为什么有时候会5个循环,有时候是4个循环?这个位置是有规律的吗?

TA的精华主题

TA的得分主题

发表于 2021-5-11 10:35 | 显示全部楼层
Sub 盘口()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Range("ae21:an999").ClearContents
    For k = 11 To 20
        r = 21
        For j = 21 To 44
            r2 = r + IIf(r = 21 Or r = 50 Or r = 87 Or r = 116, 4, 3)
            If Sheet3.Cells(j, k) = "留" Then
                For i = r To r2
                    Cells(i, k + 20).Value = Sheet2.Cells(i, "D").Value
                Next i
            End If
            r = r2 + 1
        Next j
        Cells(21, k + 20).Resize(r - 21, 1).Sort key1:=Cells(21, k + 20), order1:=xlAscending
    Next
   
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
   
End Sub

TA的精华主题

TA的得分主题

发表于 2021-5-11 10:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 cjjhpc 于 2021-5-11 11:30 编辑

这样该试试
Sub 盘口模拟()
    Dim i&, j&, k%, 结果
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    For i = 31 To 38
        Cells(19, i) = sheet1.Cells(19, i)
        With Range(Cells(21, i), Cells(1020, i))
            .ClearContents
            .NumberFormatLocal = "@"
        End With
    Next
    j = 21
    For k = 11 To 20
        For i = 21 To 120
            If Sheet3.Cells(j, k) = "留" Then Cells(i, k + 20) = Sheet2.Cells(i, 4)
            j = j + 1
        Next
        j = 21
    Next
    For i = 31 To 40
        Range(Cells(21, i), Cells(1020, i)).Sort key1:=Cells(21, i), order1:=xlAscending
    Next
    Range("BA21:BA2021").ClearContents '重置选取
    For 结果 = 21 To Sheet2.Range("B2021").End(3).Row + 1
         Cells(19, "BA") = "结果"
    With Cells(结果, "BA")
        .NumberFormatLocal = "@"
        .Value = Application.HLookup(Sheet3.Cells(11, "AS"), Range("AE19:AN" & Sheet2.Range("B2021").End(3).Row + 1), 结果 - 18, False)
    End With
    Next
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-11 10:44 | 显示全部楼层
山菊花 发表于 2021-5-11 10:35
r = 21
    For j = 21 To 44
        If Sheet3.Cells(j, 11) = "留" Then

大佬,,不好意思,,结果还是不对

筛选.rar

145.26 KB, 下载次数: 7

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

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 04:36 , Processed in 0.045492 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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