ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 提取部门最大工号

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-30 19:26 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求助:这次希望有老师帮我实现这两个效果,不胜感激!奉送小花以表谢意!因为上次我参照网上的方法修改的不是理想,时而可以,时而不行!(第二个效果),所以这次在这再次请教一下各位老师,谢谢!

提取部门最大编号.zip

15.5 KB, 下载次数: 29

提取最大号

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:12 来自手机 | 显示全部楼层
那两个效果?看不了附件。

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:12 | 显示全部楼层
Sub 提取最大工号()
Dim i%, arr
Dim d As New Dictionary
arr = Range("A4:G" & Cells(Cells.Rows.Count, 1).End(xlUp).Row)
For i = 2 To UBound(arr)
    If d(arr(i, 4)) < arr(i, 1) Then d(arr(i, 4)) = arr(i, 1)
Next
Range("A2") = d(Range("D2").Value)
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:23 | 显示全部楼层
这个应该做出全自动的,按钮都不用点,输入名称直接给出新的最大工号。

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:34 | 显示全部楼层
182197315 发表于 2018-6-30 20:12
Sub 提取最大工号()
Dim i%, arr
Dim d As New Dictionary

代码中采用了前期绑定字典,有些用户是无法打开的,
我才用了后期绑定的方式。
楼主希望能直接显示 自动A2条件区填充本部门的最新最大工号,稍微改动了下。
  1. Sub 提取最大工号()

  2. Dim i%, arr
  3. Dim d As Object
  4. Dim m As Integer

  5. Set d = CreateObject("scripting.dictionary")
  6. m = Cells(Cells.Rows.Count, 1).End(xlUp).Row

  7. arr = Range("A4:G" & m)
  8.     For i = 2 To UBound(arr)
  9.         If d(arr(i, 4)) < arr(i, 1) Then d(arr(i, 4)) = arr(i, 1)
  10.     Next
  11. Range("A2") = d(Range("D2").Value) + 1

  12. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提取部门最大编号.rar (22.09 KB, 下载次数: 11)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub aa() '按一级部门提最大工号
rw = Sheet1.Cells(Rows.Count, 1).End(3).Row
yjbm = Sheet1.Range("d2")
If yjbm = "" Then
    MsgBox "请填写一级部门"
    Exit Sub
End If
    gh = 0
For i = 5 To rw
    If Sheet1.Cells(i, 4) = yjbm Then
        If Int(Sheet1.Cells(i, 1)) > gh Then
            gh = Int(Sheet1.Cells(i, 1))
        End If
    End If
Next
Sheet1.Cells(2, 1) = gh + 1
End Sub
Sub bb() '前三后三
rw = Sheet2.Cells(Rows.Count, 1).End(3).Row
ar = Sheet2.Range("a3:c" & rw)
ReDim br(1 To UBound(ar))
For i = 1 To UBound(ar)
    a = ar(i, 3)
    br(a) = br(a) & "," & i
Next
For j = 3 To 1 Step -1
    b = Split(br(j), ",")
    For k = 1 To UBound(b)
        n = n + 1
        Sheet2.Cells(n + 9, 5) = ar(Int(b(k)), 1)
        Sheet2.Cells(n + 9, 6) = ar(Int(b(k)), 2)
        Sheet2.Cells(n + 9, 7) = ar(Int(b(k)), 3)
    Next
Next
r = 0: s = 0: n = 0
While r < 3
    t = UBound(br) - s
    If br(t) <> "" Then
        b = Split(br(t), ",")
        For k = 1 To UBound(b)
            n = n + 1
            Sheet2.Cells(n + 9, 9) = ar(Int(b(k)), 1)
            Sheet2.Cells(n + 9, 10) = ar(Int(b(k)), 2)
            Sheet2.Cells(n + 9, 11) = ar(Int(b(k)), 3)
        Next
        r = r + 1
    End If
    s = s + 1
Wend
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tudarong 发表于 2018-6-30 20:34
代码中采用了前期绑定字典,有些用户是无法打开的,
我才用了后期绑定的方式。
楼主希望能直接显示 自 ...

我看过你的问题,这段代码如果是工号打乱顺序的话会匹配错误的。

TA的精华主题

TA的得分主题

发表于 2018-6-30 20:54 | 显示全部楼层
本帖最后由 duquancai 于 2018-6-30 20:57 编辑

只做“效果2”:提取最前三名!!!,提取最后三名 原理一样,自己做!!!
  1. Sub main()
  2.     Dim conn As Object, sql$, s$
  3.     Sheets("效果2").Select: Range("E3:G100").ClearContents
  4.     Set conn = CreateObject("adodb.connection")
  5.     conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=no';data source=" & ThisWorkbook.FullName
  6.     s = "select top 3 f3 from [效果2$A3:C] where f3 is not null group by f3"
  7.     sql = "select b.f1,b.f2,a.f3 from (" & s & ") a left join [效果2$A3:C] b on a.f3=b.f3 order by a.f3 desc"
  8.     Range("e3").CopyFromRecordset conn.Execute(sql)
  9. End Sub
复制代码

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-12-29 04:33 , Processed in 0.050183 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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