ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怎么根据名单新增列数与填入对应内容

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-1-3 18:25 | 显示全部楼层 |阅读模式
本帖最后由 979595410 于 2023-1-3 18:53 编辑

如何可以快速根据名单表上到内容在直接上级表和间接上级表新增列数,然后按照内容填入对应的单元格。名单长度不固定的。然后另存为名称改为名单表b5单元格内容&填写测试,(张三填写测试)
Screenshot_2023-01-03-18-22-39-257_cn.wps.moffice_eng.xiaomi.lite.jpg
Screenshot_2023-01-03-18-22-45-477_cn.wps.moffice_eng.xiaomi.lite.jpg

想要的效果图

想要的效果图

B5填写测试.zip

10.86 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2023-1-3 18:38 | 显示全部楼层
建议楼主结合附件内容,将需求结果模拟出来,并明确实现步骤啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-3 18:52 | 显示全部楼层
本帖最后由 979595410 于 2023-1-3 18:53 编辑
liulang0808 发表于 2023-1-3 18:38
建议楼主结合附件内容,将需求结果模拟出来,并明确实现步骤啊

例如直接上级表d3单元格,填入名单表b4内容,直接上级表h6填入名单表b7,根据名单表b7:b25的内容新增列。已经上传效果图3

TA的精华主题

TA的得分主题

发表于 2023-1-3 19:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 按钮1_Click()
    Application.ScreenUpdating = False
   
    With Sheets("直接上级")
        .[d3] = [b4]
        .[h2] = [b5]
        r = Cells(Rows.Count, 2).End(3).Row
        .[d2] = Join(WorksheetFunction.Transpose(Range("b7:b" & r)), "、")
    End With
    With Sheets("间接上级")
        .[d3] = [c4]
        .[h2] = [c5]
        r = Cells(Rows.Count, 3).End(3).Row
        .[d2] = Join(WorksheetFunction.Transpose(Range("c7:c" & r)), "、")
    End With
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2023-1-3 19:02 | 显示全部楼层
模拟供参考。。。。。。。

B5填写测试.zip

19.64 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-4 10:07 | 显示全部楼层
liulang0808 发表于 2023-1-3 19:02
模拟供参考。。。。。。。

是标绿色的地方需要按照名单表的内容相对于填入,然后重命名薄名称,版主可以帮忙再改一下吗?

原始表是这样的

原始表是这样的

效果图2,需要按照名表的内容填入对于的表内,并按照名表所列的名称在h6的基础上新增

效果图2,需要按照名表的内容填入对于的表内,并按照名表所列的名称在h6的基础上新增

效果图1,需要按照名表的内容填入对于的表内,并按照名表所列的名称在h6的基础上新增

效果图1,需要按照名表的内容填入对于的表内,并按照名表所列的名称在h6的基础上新增

张三填写测试.zip

12.28 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2023-1-4 10:57 | 显示全部楼层
Sub 按钮1_Click()
    Application.ScreenUpdating = False
    r = Sheets("名单").Cells(Rows.Count, 2).End(3).Row
    arr = Sheets("名单").Range("b7:b" & r)
    Sheets("原始表").Copy after:=Sheets(1)
    With Sheets(2)
        .Name = "直接上级"
        .[d3] = Sheets("名单").[b4]
        .[h2] = Sheets("名单").[b5]
        .[d2] = Join(WorksheetFunction.Transpose(arr), "、")
        .Cells(6, 8) = arr(1, 1)
        For j = UBound(arr) - 1 To 1 Step -1
            .Columns(8).Insert
            .Cells(5, 9).Resize(2).Copy .Cells(5, 8)
            .Cells(2, 8).Resize(1, 4).Merge
            .Cells(3, 8).Resize(1, 4).Merge
            .Cells(6, 8) = arr(j, 1)
        Next j
    End With

    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2023-1-4 10:57 | 显示全部楼层
模拟了一个,供参考。。。。。。

张三填写测试.zip

20.16 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-1-4 11:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 新建工作表()
Application.ScreenUpdating = False
Dim ar As Variant, br As Variant
Application.DisplayAlerts = False
For Each sh In Sheets
    If sh.Index > 2 Then
        sh.Delete
    End If
Next sh
Application.DisplayAlerts = True
With Sheets("名单")
    r = .Cells(Rows.Count, 2).End(xlUp).Row
    ar = .Range("b7:b" & r)
    rs = .Cells(Rows.Count, 3).End(xlUp).Row
    br = .Range("c7:c" & rs)
    xm = .[b3]
    bm = .[b2]
    zw = .[b5]
End With
Sheets("原始表").Copy after:=Sheets(Sheets.Count)
With ActiveSheet
    .Name = xm & "直接上级填写测试"
    sl = r - 7
    ls = 8 + sl
    lh = Chr(ls + 64)
    .Columns("I:" & lh).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    .Cells(5, 8).Resize(1, sl + 1) = "评分"
    .Cells(6, 8).Resize(1, sl + 1) = Application.Transpose(ar)
End With
Sheets("原始表").Copy after:=Sheets(Sheets.Count)
With ActiveSheet
    .Name = xm & "间接上级填写测试"
    sl = rs - 7
    ls = 8 + sl
    lh = Chr(ls + 64)
    .Columns("I:" & lh).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    .Cells(5, 8).Resize(1, sl + 1) = "评分"
    .Cells(6, 8).Resize(1, sl + 1) = Application.Transpose(br)
End With
Application.ScreenUpdating = True
MsgBox "ok!"
End Sub

TA的精华主题

TA的得分主题

发表于 2023-1-4 11:07 | 显示全部楼层
张三填写测试.rar (16.31 KB, 下载次数: 3)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 22:31 , Processed in 0.045578 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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