ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何根据第一张表中每个岗位对应的部室和岗级自动填写到第二张表中

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-13 16:42 | 显示全部楼层 |阅读模式
如何根据第一张表中每个岗位对应的部室和岗级自动填写到第二张表中

岗位自动划分.zip

12.47 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2014-11-13 17:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
oledb创建表,方法见吴版帖子:

各Excel版本使用SQL创建数据透视表的步骤教程

sql 语句:
  1. TRANSFORM first(岗位名称) select 岗级,岗级1 from [1、【全部岗位】岗位等级序列表 $b2:f] where 岗级1 is not  null group by 岗级,岗级1 order by 岗级1 desc pivot 部室
复制代码
格式什么的自己调整吧,
附件:


岗位自动划分.rar (13.51 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

发表于 2014-11-13 20:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test()
  2.   Dim d As New Dictionary
  3.   Dim d1 As New Dictionary
  4.   Dim r%, i%, c%, j%
  5.   Dim arr, brr()
  6.   With Worksheets("1、【全部岗位】岗位等级序列表")
  7.     r = .Cells(.Rows.Count, 2).End(xlUp).Row
  8.     arr = .Range("d3:f" & r)
  9.   End With
  10.   n = 1
  11.   For i = 1 To UBound(arr)
  12.     If Not d1.Exists(arr(i, 1)) Then
  13.       n = n + 1
  14.       d1(arr(i, 1)) = n
  15.     End If
  16.     If Not d.Exists(arr(i, 2)) Then
  17.       Set d(arr(i, 2)) = CreateObject("scripting.dictionary")
  18.     End If
  19.     If Not d(arr(i, 2)).Exists(arr(i, 1)) Then
  20.       m = 1
  21.       ReDim brr(1 To m)
  22.     Else
  23.       brr = d(arr(i, 2))(arr(i, 1))
  24.       m = UBound(brr) + 1
  25.       ReDim Preserve brr(1 To m)
  26.     End If
  27.     brr(m) = Mid(arr(i, 3), InStr(arr(i, 3), "】") + 1)
  28.     d(arr(i, 2))(arr(i, 1)) = brr
  29.   Next
  30.   With Worksheets("sheet1")
  31.     .Cells.Clear
  32.     .Range("b1").Resize(1, d1.Count) = d1.Keys
  33.     .Range("a1") = "岗级"
  34.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  35.     For Each aa In d.Keys
  36.       r0 = .UsedRange.Find(what:="*", lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1
  37.       For Each bb In d(aa).Keys
  38.         brr = d(aa)(bb)
  39.         .Cells(r0, d1(bb)).Resize(UBound(brr), 1) = Application.Transpose(brr)
  40.       Next
  41.       r1 = .UsedRange.Find(what:="*", lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1
  42.       With .Cells(r0, 1)
  43.         .Value = aa
  44.         .Resize(r1 - r0).Merge
  45.       End With
  46.       For j = 2 To c
  47.         r2 = .Cells(.Rows.Count, j).End(xlUp).Row
  48.         If r2 <= r0 Then
  49.           .Cells(r0, j).Resize(r1 - r0).Merge
  50.         End If
  51.       Next
  52.     Next
  53.     r = .UsedRange.Find(what:="*", lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
  54.     With .Range("a1").Resize(r, c)
  55.       .Borders.LineStyle = xlContinuous
  56.       .HorizontalAlignment = xlCenter
  57.       .VerticalAlignment = xlCenter
  58.     End With
  59.   End With
  60. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-11-13 20:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
详见附件。

岗位自动划分.rar

20.17 KB, 下载次数: 37

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-14 16:56 | 显示全部楼层
3楼的是正确的,2楼的会丢失一些岗位,假设在符合两个条件下有多个岗位,则只会显示一个岗位。
非常感谢大家的帮忙

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-14 16:57 | 显示全部楼层
chxw68 发表于 2014-11-13 20:25
详见附件。

非常感谢,对我们太有用了

TA的精华主题

TA的得分主题

发表于 2018-7-25 17:10 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 00:18 , Processed in 0.025181 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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