Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 726|回复: 5

[已解决]依据名称列上传到汇总表相应名称的对应的位置

[复制链接]
发表于 2022-6-26 23:01 | 显示全部楼层 |阅读模式
      不好意思,因为试了几天,解决不了。所以想求路过的大虾朋友,友情帮忙一下,不胜感激,谢谢!
因工作原因,每周需要各部门依自已的名字,填周一 至 周日的考勤情况。(用颜色高亮提醒:休年假、加班)
1、来源表(例:采购、生产、行政等),需要在对应的员工填 好考勤和颜色后,就点击“提交”,就自动发送到“汇总表”
2、每个来源表跟依员工名称,搜到汇总表名称列,找到相应的位置后,再填充数据和颜色到汇总表。
(用数组可以操作到数据填上去,但是颜色格式好像搞不定,特来请教!!!感恩)

最佳答案
2022-6-27 20:32
本帖最后由 我行我速2008 于 2022-6-27 20:46 编辑

如果相符,把表二F列至L列复制到表一不就行了吗?

依据名称列上传到汇总表相应名称的对应的位置.zip

834.05 KB, 下载次数: 36

发表于 2022-6-27 14:06 | 显示全部楼层
格式什么的 , 自己录制个宏 , 手工操作一下 不就有代码了?
回复

使用道具 举报

发表于 2022-6-27 14:54 | 显示全部楼层
本帖最后由 eennoo 于 2022-6-27 14:56 编辑

Sub main()
Dim result() As String, objSheet As Worksheet
Dim RowCount As Long
ReDim result(1 To Cells.Rows.Count, 1 To Range("A:L").Columns.Count) As String

For Each objSheet In Worksheets
    If objSheet.Name Like "*数据源*" Then
        Set usdRng = Range(objSheet.Range("A3"), objSheet.Range("A3").End(xlDown).Offset(0, 11))
        RowCount = RowCount + usdRng.Rows.Count
        For i = 1 To usdRng.Rows.Count
            Set Rng = usdRng(i, 1).Resize(1, usdRng.Columns.Count)
            k = 1
            L = Rng.Columns.Count
            
            total Rng, result, k, L
        Next
    End If
Next
Sheet1.Range("A3:L65536").Clear
Sheet1.Range("A3").Resize(RowCount, 12) = result
'设置颜色
Sheet1.Range("F3:L" & RowCount).SpecialCells(xlCellTypeConstants, 23).Interior.Color = RGB(0, 200, 0)



End Sub

Sub total(ByRef source, ByRef result, ByVal k, ByVal L)
If Len(result(k, 1)) = 0 Then
    For c = 1 To L
        result(k, c) = source(1, c)
    Next
    Exit Sub
   
    Else
    Dim flag As Boolean
    flag = True
   
    For c = 2 To 5
    If result(k, c) = CStr(source(1, c)) Then flag = flag And True Else flag = flag And False
    Next
   
    If flag Then
        For c = 1 To 5
            result(k, c) = source(1, c)
        Next
        For c = 6 To L
            If result(k, c) = "" Then result(k, c) = source(1, c)
        Next
    Exit Sub
    End If
   
    total source, result, k + 1, L
End If
End Sub

依据名称列上传到汇总表相应名称的对应的位置.zip

571.62 KB, 下载次数: 7

评分

参与人数 1学分 +2 收起 理由
redsunsky + 2 感恩帮忙

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-6-27 20:05 | 显示全部楼层
eennoo 发表于 2022-6-27 14:54
Sub main()
Dim result() As String, objSheet As Worksheet
Dim RowCount As Long

感恩兄弟的友情帮忙。与最初的构想有点不一样,我不想每次清空汇总表的固有格式,因为这个表固定给财务。我想是希望
1、汇总表上A列-E列的数据是固定不变的。再依其他几个来源表每个名称,对应找到姓名列中的名称,套入A列-E列相应的数据和两种颜色。
如绿色代表是:年假 ,粉红色:加班。 上面8字是手工录入的上班时间。
2、有点味道,像vlookup ,找到相应的名称后,自已引用相应的数据。不过这里又加了颜色。
感恩!
回复

使用道具 举报

发表于 2022-6-27 20:32 | 显示全部楼层    本楼为最佳答案   
本帖最后由 我行我速2008 于 2022-6-27 20:46 编辑

如果相符,把表二F列至L列复制到表一不就行了吗?

依据名称列上传到汇总表相应名称的对应的位置.rar

407.3 KB, 下载次数: 8

评分

参与人数 1学分 +2 收起 理由
redsunsky + 2 学习了,好棒,感恩您

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-6-27 20:38 | 显示全部楼层
我行我速2008 发表于 2022-6-27 20:32
如果相符,把表二F列至L列复制到表一不就行了吗?

是的,做个循环,不过可能这样作,读取得好慢。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 17:58 , Processed in 0.524040 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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