ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 在EXCEL中怎样将表格内的辞职人员自动跳到另一个表格内

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-26 21:14 | 显示全部楼层
jesus123321 发表于 2023-4-26 13:49
感谢老师解答,想要这样的
1.如果在《在职表》里改为“离职”,人员移动至《离职表》
2.如果在《在职表 ...
  1. <p>Option Explicit</p><p>
  2. </p><p>Private Sub Worksheet_Change(ByVal Target As Range)</p><p>On Error Resume Next '设置错误处理</p><p>Dim wstLZ As Worksheet, wstTX As Worksheet, intR%, j%</p><p>Set wstLZ = Sheets("离职表")</p><p>Set wstTX = Sheets("退休表")</p><p>Application.ScreenUpdating = False '关闭屏幕刷新</p><p>If Target.Cells.Count = 1 Then</p><p>  If Target.Column = 6 And Target.Row > 1 And Len(Target.Value) > 0 Then</p><p>    Select Case Target.Value</p><p>      Case "离职"</p><p>        intR = wstLZ.[A65536].End(xlUp).Row + 1 '获取离职表可添数据行号</p><p>        Target.EntireRow.Copy wstLZ.Cells(intR, 1)  '复制到离职表</p><p>        wstLZ.Cells(intR, Target.Column).Interior.ThemeColor = 8</p><p>      Case "退休"</p><p>        intR = wstLZ.[A65536].End(xlUp).Row + 1</p><p>        Target.EntireRow.Copy wstLZ.Cells(intR, 1)</p><p>        wstLZ.Cells(intR, Target.Column).Interior.ThemeColor = 10</p><p>        With wstTX '提取数据到退休表</p><p>          intR = .[A65536].End(xlUp).Row + 1 '获取退休表可添数据行号</p><p>          .Cells(intR, 1).Formula = "=ROW()-1" '写入序号公式</p><p>          For j = 2 To .[A1].End(xlToRight).Column '使用循环匹配表头对应数据</p><p>            .Cells(intR, j) = Cells(Target.Row, [1:1].Find(.Cells(1, j), LookIn:=xlValues).Column)</p><p>          Next</p><p>          .Cells(intR, .[1:1].Find("状态", LookIn:=xlValues).Column).Interior.ThemeColor = 10</p><p>        End With</p><p>    End Select</p><p>    Target.EntireRow.Delete '删除当前行</p><p>    '设置边框线</p><p>    wstLZ.[A1].CurrentRegion.Borders.LineStyle = xlContinuous</p><p>    wstTX.[A1].CurrentRegion.Borders.LineStyle = xlContinuous</p><p>  End If</p><p>End If</p><p>'释放资源</p><p>Set wstLZ = Nothing</p><p>Set wstTX = Nothing</p><p>Application.ScreenUpdating = True '打开屏幕刷新</p><p>End Sub</p>
复制代码



230426_花名册.rar

25.17 KB, 下载次数: 20

TA的精华主题

TA的得分主题

发表于 2023-4-26 23:31 | 显示全部楼层

感谢老师,真是太谢谢啦!完美解决了我的解决问题!

TA的精华主题

TA的得分主题

发表于 2023-4-27 00:26 | 显示全部楼层

抱歉老师,打扰您了,好像出了点小问题,不知道是不是我操作的问题
1.《在职表》里F列只要输入任意内容整行就会直接消失,新的信息填不进去,原先表里状态为在职的人只要点击单元格里“在职”两个字,也会整行消失...
2.可不可以在移进《离职表》里的时候,把B列的序号也给去掉呀(那个B列的分序号在《在职表》里有用,在《离职表》里就没有用啦)
再次感谢老师!

TA的精华主题

TA的得分主题

发表于 2023-4-27 00:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

老师,我是这两天才发现这个宝藏论坛的,无奈我暂时还没有私聊的权限,就只能在这里给您留言了,可以获得一下您的联系方式嘛?我没什么基础,想向您学习,也想向您表达一下谢意!

TA的精华主题

TA的得分主题

发表于 2023-4-27 14:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Option Explicit

  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3. On Error Resume Next '设置错误处理
  4. Dim wstLZ As Worksheet, wstTX As Worksheet, intR%, j%
  5. Set wstLZ = Sheets("离职表")
  6. Set wstTX = Sheets("退休表")
  7. Application.ScreenUpdating = False '关闭屏幕刷新
  8. If Target.Cells.Count = 1 Then
  9.   If Target.Column = 6 And Target.Row > 1 And Len(Target.Value) > 0 And Cells(Target.Row, 6) = "离职" Then
  10.     Select Case Target.Value
  11.       Case "离职"
  12.         intR = wstLZ.[A65536].End(xlUp).Row + 1 '获取离职表可添数据行号
  13.         Target.EntireRow.Copy wstLZ.Cells(intR, 1)  '复制到离职表
  14.         wstLZ.Cells(intR, Target.Column).Interior.ThemeColor = 8
  15.     End Select
  16.     Target.EntireRow.Delete '删除当前行
  17.   ElseIf Target.Column = 6 And Target.Row > 1 And Len(Target.Value) > 0 And Cells(Target.Row, 6) = "退休" Then
  18.     Select Case Target.Value
  19.       Case "退休"
  20.         intR = wstLZ.[A65536].End(xlUp).Row + 1
  21.         Target.EntireRow.Copy wstLZ.Cells(intR, 1)
  22.         wstLZ.Cells(intR, Target.Column).Interior.ThemeColor = 10
  23.         With wstTX '提取数据到退休表
  24.           intR = .[A65536].End(xlUp).Row + 1 '获取退休表可添数据行号
  25.           .Cells(intR, 1).Formula = "=ROW()-1" '写入序号公式
  26.           For j = 2 To .[A1].End(xlToRight).Column '使用循环匹配表头对应数据
  27.             .Cells(intR, j) = Cells(Target.Row, [1:1].Find(.Cells(1, j), LookIn:=xlValues).Column)
  28.           Next
  29.           .Cells(intR, .[1:1].Find("状态", LookIn:=xlValues).Column).Interior.ThemeColor = 10
  30.         End With
  31.     End Select
  32.     Target.EntireRow.Delete '删除当前行
  33.     '设置边框线
  34.     wstLZ.[A1].CurrentRegion.Borders.LineStyle = xlContinuous
  35.     wstTX.[A1].CurrentRegion.Borders.LineStyle = xlContinuous
  36.   End If
  37. End If
  38. '释放资源
  39. Set wstLZ = Nothing
  40. Set wstTX = Nothing
  41. Application.ScreenUpdating = True '打开屏幕刷新
  42. End Sub
复制代码
不知道我这样修改的对不对,但是《在职表》移到《离职表》删除B列那个我就不会啦,希望得到您的指点~

TA的精华主题

TA的得分主题

发表于 2023-4-27 17:21 | 显示全部楼层
jesus123321 发表于 2023-4-27 00:26
抱歉老师,打扰您了,好像出了点小问题,不知道是不是我操作的问题
1.《在职表》里F列只要输入任意内容 ...
  1. Option Explicit

  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3. On Error Resume Next '设置错误处理
  4. Dim wstLZ As Worksheet, wstTX As Worksheet, intR%, j%
  5. Set wstLZ = Sheets("离职表")
  6. Set wstTX = Sheets("退休表")
  7. Application.ScreenUpdating = False '关闭屏幕刷新
  8. If Target.Cells.Count = 1 Then
  9.   If Target.Column = 6 And Target.Row > 1 And Len(Target.Value) > 0 Then
  10.     Select Case Target.Value
  11.       Case "离职"
  12.         intR = wstLZ.[A65536].End(xlUp).Row + 1 '获取离职表可添数据行号
  13.         Target.EntireRow.Copy wstLZ.Cells(intR, 1)  '复制到离职表
  14.         wstLZ.Cells(intR, 2) = ""
  15.         wstLZ.Cells(intR, Target.Column).Interior.ThemeColor = 8
  16.       Case "退休"
  17.         intR = wstLZ.[A65536].End(xlUp).Row + 1
  18.         Target.EntireRow.Copy wstLZ.Cells(intR, 1)
  19.         wstLZ.Cells(intR, 2) = ""
  20.         wstLZ.Cells(intR, Target.Column).Interior.ThemeColor = 10
  21.         With wstTX '提取数据到退休表
  22.           intR = .[A65536].End(xlUp).Row + 1 '获取退休表可添数据行号
  23.           .Cells(intR, 1).Formula = "=ROW()-1" '写入序号公式
  24.           For j = 2 To .[A1].End(xlToRight).Column '使用循环匹配表头对应数据
  25.             .Cells(intR, j) = Cells(Target.Row, [1:1].Find(.Cells(1, j), LookIn:=xlValues).Column)
  26.           Next
  27.           .Cells(intR, .[1:1].Find("状态", LookIn:=xlValues).Column).Interior.ThemeColor = 10
  28.         End With
  29.       Case Else
  30.         Exit Sub
  31.     End Select
  32.     Target.EntireRow.Delete '删除当前行
  33.     '设置边框线
  34.     wstLZ.[A1].CurrentRegion.Borders.LineStyle = xlContinuous
  35.     wstTX.[A1].CurrentRegion.Borders.LineStyle = xlContinuous
  36.   End If
  37. End If
  38. '释放资源
  39. Set wstLZ = Nothing
  40. Set wstTX = Nothing
  41. Application.ScreenUpdating = True '打开屏幕刷新
  42. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2023-4-28 00:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-5-5 13:53 | 显示全部楼层
ywang691 发表于 2010-2-10 21:54
不错, 但如果能让sheet 1中的辞职人员消除而显示在sheet2中就更实用了.

可以用三个表,一个汇总表,一个离职人员,一个在职人员表,不然可以让人用VBA才能实现这个功能

TA的精华主题

TA的得分主题

发表于 2023-7-3 10:54 | 显示全部楼层
实用~不过状态不可逆,如果不小心写了离职跳到离职表里无法再改回来

TA的精华主题

TA的得分主题

发表于 2023-9-7 12:45 来自手机 | 显示全部楼层
学习了很多,不过我这个有个小问题想请教下各位大神,表格一中公司的花名册。但是在表格二中,我是一次表,就是从表格一中筛选出来,如果表格二中有离职的人员,那么表格一中将不会显示,如何用公式或者是其他的就是不要用那个代码和那个宏
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-14 14:29 , Processed in 0.040675 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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