ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 常用代码归集

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-19 15:04 | 显示全部楼层
mark一下以后一点一点研究

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-19 16:36 | 显示全部楼层
http://club.excelhome.net/thread-1374458-1-1.html
如何实现跨多个表的vlookup查询
Sub Adele()
    Dim d  As Object, sht As Worksheet
    Set d = CreateObject("scripting.dictionary")
    On Error Resume Next
    For Each sht In Worksheets
        If sht.Name <> "TEST1" Then
            With sht
                arr = .Range("a1").CurrentRegion
                For x = 2 To UBound(arr)
                    s = sht.Name & "," & arr(x, 1)
                    d(s) = Array(arr(x, 2), arr(x, 3), arr(x, 4), arr(x, 5), arr(x, 6), arr(x, 7), arr(x, 8), arr(x, 9), arr(x, 10), arr(x, 11), arr(x, 12))
                Next
            End With
        End If
    Next
    With Sheets("TEST1")
        .Range("e2:q65535").ClearContents
        brr = .Range("a1").CurrentRegion
        For y = 2 To UBound(brr)
            sbr = brr(y, 1) & "," & brr(y, 2)
            If d.exists(sbr) Then
                .Cells(y, 5).Resize(1, 11) = d(sbr)
            End If
        Next
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-20 12:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助


'请帮忙使用宏编程随机提取相应清单内容
http://club.excelhome.net/thread-1374820-1-1.html
Sub Adele()
    Dim d  As Object, arr, r&, nNum&, z&
    Dim sCity$, brr(), crr(1 To 10), drr(), er(1 To 10, 1 To 11)
    arr = Range("a1").CurrentRegion
    nNum = InputBox("输入数量", "温馨提示")
    sCity = InputBox("输入地市名称", "温馨提示")
    ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
    For x = 3 To UBound(arr)
            If arr(x, 11) = "呼入" Then
                k = k + 1
                For y = 1 To UBound(arr, 2): brr(k, y) = arr(x, y): Next
            End If
    Next
    ReDim drr(1 To UBound(brr), 1 To UBound(brr, 2))
    For m = 1 To UBound(brr)
        If InStr(brr(m, 10), sCity) Then
            kk = kk + 1
            For n = 1 To UBound(brr, 2): drr(kk, n) = brr(m, n): Next
        End If
    Next
    For a = 1 To nNum: crr(a) = Int(Rnd * kk): Next
    For z = 1 To UBound(drr)
        For c = 1 To UBound(crr)
            If z = crr(c) Then
                k1 = k1 + 1
                For l = 1 To UBound(drr, 2)
                    er(k1, l) = drr(z, l)
                Next
            End If
        Next
    Next
    Columns("p:ac").NumberFormatLocal = "@"
    [t1].Resize(UBound(er), UBound(er)) = er
End Sub

TA的精华主题

TA的得分主题

发表于 2017-10-20 16:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主辛苦,收藏了慢慢研究学习

TA的精华主题

TA的得分主题

发表于 2017-10-20 22:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
插一足,备查备用,谢谢

TA的精华主题

TA的得分主题

发表于 2017-10-21 10:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
期待表格汇总,搜索对应代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-22 10:24 | 显示全部楼层
20171022
http://club.excelhome.net/thread-1375080-1-1.html
求多条件复杂判断VBA解决方案
Sub Adele()
    With Sheets("Sheet1")
        arr = .Range("a1").CurrentRegion
        For x = 2 To UBound(arr)
            If arr(x, 4) > 30 Then
                If arr(x, 1) = "db111" Or arr(x, 1) = "db411" And arr(x, 3) > 25 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db211" And arr(x, 3) > 5 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db311" And arr(x, 3) > 0.5 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db511" And arr(x, 3) > 30 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db611" And arr(x, 3) > 15 Then
                    arr(x, 5) = "合格"
                Else
                    arr(x, 5) = "不合格"
                End If
            Else
                If arr(x, 1) = "db111" Or arr(x, 1) = "db411" And arr(x, 3) > 400 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db211" And arr(x, 3) > 40 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db311" And arr(x, 3) > 30 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db511" And arr(x, 3) > 500 Then
                    arr(x, 5) = "合格"
                ElseIf arr(x, 1) = "db611" And arr(x, 3) > 100 Then
                    arr(x, 5) = "合格"
                Else
                    arr(x, 5) = "不合格"
                End If
            End If
        Next
        .[e1].Resize(UBound(arr)) = Application.Index(arr, , 5)
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-22 17:12 | 显示全部楼层
20171022
http://club.excelhome.net/thread-1375159-1-1.html
关于vba汇总问题
Sub Adele()
    Dim Arr, brr(1 To 5000, 1 To 5)
    Application.ScreenUpdating = False
    Sheet5.Activate
    Cells.UnMerge
    Cells.ClearContents
    For Each sh In Worksheets
        If sh.Name <> "汇总表" And sh.Name <> "汇总后的效果" Then
            With sh
                Arr = .Range("a1").CurrentRegion
                For x = 3 To UBound(Arr)
                    k = k + 1
                    For y = 1 To UBound(Arr, 2)
                        brr(k, 1) = sh.Name
                        brr(k, y + 1) = Arr(x, y)
                    Next y
                Next x
            End With
        End If
    Next sh
    Range("a1") = "产品成果表"
    Range("a1").Resize(1, 5).Merge
    Range("a2").Resize(1, 5) = [{"表名","编号","姓名","目标","完成"}]
    Sheets("汇总表").Range("a3").Resize(UBound(brr), UBound(brr, 2)) = brr
    Range("a2:e" & k + 2).Borders.LineStyle = xlContinuous
    Application.DisplayAlerts = False
    For i = 3 To [a65536].End(3).Row
        For x = i + 1 To [a65536].End(3).Row
            If Cells(x, 1) = Cells(i, 1) Then Range(Cells(i, 1), Cells(x, 1)).Merge
        Next
    Next
    Cells.HorizontalAlignment = xlCenter
    Cells.VerticalAlignment = xlCenter
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-24 16:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
怎么在A列查找数据并跳到该数据所在位置
http://club.excelhome.net/thread-1375510-1-1.html
Sub Adele()
    Dim d  As Object, s$, arr, x&
    s = InputBox("请输入查找数据", "温馨提示")
    Set d = CreateObject("scripting.dictionary")
    With Sheet1
        arr = .Range("a1").CurrentRegion
        For x = 1 To UBound(arr)
            d(arr(x, 1)) = x
        Next
        If d.exists(s) Then .Cells(d(s), 1).Select Else MsgBox "您输入的数据不存在,请添加!"
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-25 10:11 | 显示全部楼层
根据D列提取到相关的工作表
http://club.excelhome.net/thread-1375626-1-1.html
Sub Adele()
    Dim d, arr, x&, L&, sh As Worksheet, r&, y&, z&
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For y = Sheets.Count To 2 Step -1
        Sheets(y).Delete
    Next y
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Set sh = Sheets("10月份木纹机台产量")
    sh.Select
    Set d = CreateObject("Scripting.dictionary")
    Application.ScreenUpdating = False
    arr = Range("a1").CurrentRegion
    brr = Array("1#", "2#", "3#", "4#", "5#", "6#")
    For z = 0 To UBound(brr)
        a = "木纹" & brr(z) & "机"
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = brr(z)
        sh.Select
        If Application.Version = 14 Then
            Range("A1").CurrentRegion.AutoFilter 4, "=" & a
        Else
            Range("A1").CurrentRegion.AutoFilter 4, a
        End If
        Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
        With Sheets(Sheets.Count)
            .Range("A1").PasteSpecial xlPasteAll
            .Cells.EntireColumn.AutoFit
        End With
        Range("A5").CurrentRegion.AutoFilter
    Next z
Application.ScreenUpdating = True
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-16 13:41 , Processed in 0.036737 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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