ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 将数据中的内容按模板输出

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-2 09:50 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 心电感应 于 2022-11-16 14:11 编辑

将数据中的内容按模板输出

分组模拟附件.rar

16.94 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2020-11-2 12:31 | 显示全部楼层
本帖最后由 心电感应 于 2022-11-16 14:12 编辑

Sub 排列()

    Dim d
    Set d = CreateObject("Scripting.Dictionary")
   
    arr = Sheet1.Range("a1").CurrentRegion
   
    For a = 2 To UBound(arr)
        If arr(a, 4) <> "" Then
            If Not d.exists(arr(a, 1)) Then
                d(arr(a, 1)) = a
            Else
                d(arr(a, 1)) = d(arr(a, 1)) & "/" & a
            End If
        End If
    Next
    items = d.items
   
    lie = 1
    zu = 1
    hang = 2
    For a = 0 To UBound(items)
        hang1 = Split(items(a), "/")
        For b = 0 To UBound(hang1)
            lie = lie + 1
            If lie = 8 Then
                lie = 2
                hang = hang + 3
                zu = zu + 1
            End If
            Cells(hang, 1) = zu & "组"
            Cells(hang, lie) = lie - 1
            Cells(hang + 1, lie) = arr(hang1(b), 2)
            Cells(hang + 2, lie) = arr(hang1(b), 4)
        Next
    Next a
   
End Sub
仅供参考,陆红豪和你的排序有差异,看不懂你是咋排的.

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-3 08:52 | 显示全部楼层
本帖最后由 心电感应 于 2022-11-16 14:13 编辑

我重新传一份,麻烦你了
这个表就是学生参加运动会的分组分道的表,例如:将参加100米的运动员分成几组,每组6人,每组里根据原有数据里内容显示班级和运动员名字!这只是一个项目!

TA的精华主题

TA的得分主题

发表于 2020-11-3 10:30 | 显示全部楼层
本帖最后由 心电感应 于 2022-11-16 14:13 编辑
newlove 发表于 2020-11-3 08:52
我重新传一份,麻烦你了
这个表就是学生参加运动会的分组分道的表,例如:将参加100米的运动员分成几组, ...

Sub 排列()

    Sheet1.Activate
    Sheet1.Range("A2:D" & Sheet1.[a60000].End(xlUp).Row).Select
    With Sheet1.Sort
        With .SortFields
            .Clear
            .Add Key:=Range("D2:D" & Sheet1.[a60000].End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:=""
        End With
        .Header = xlNo
        .Orientation = xlSortColumns
        .MatchCase = False
        .SortMethod = xlPinYin
        .SetRange Rng:=Selection
        .Apply
    End With '辅助列乱序
   
    arr = Sheet1.Range("a1").CurrentRegion
   
    With Sheet4
        lie = 1
        zu = 1
        hang = 2
        For a = 2 To UBound(arr)
            If arr(a, 3) <> "" Then
                lie = lie + 1
                If lie = 8 Then
                    lie = 2
                    hang = hang + 3
                    zu = zu + 1
                End If
                .Cells(hang, 1) = zu & "组"
                .Cells(hang, lie) = lie - 1 & "道"
                .Cells(hang + 1, lie) = arr(a, 2)
                .Cells(hang + 2, lie) = arr(a, 3)
            End If
        Next a
    End With
   
End Sub仅供参考,自己修修改改吧

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-3 13:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 心电感应 于 2022-11-16 14:13 编辑

前面没有说清楚 ,现重新发一份,请老师们帮帮!

是关于运动会报名分项分组分道的  编程。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-3 13:54 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-4 08:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
orr89 发表于 2020-11-3 10:30
Sub 排列()

    Sheet1.Activate

感谢你!单项分组分道成功排列!如果要再增加几个单项,如何循环了?

TA的精华主题

TA的得分主题

发表于 2020-11-4 09:03 | 显示全部楼层
newlove 发表于 2020-11-4 08:46
感谢你!单项分组分道成功排列!如果要再增加几个单项,如何循环了?

先乱序排,然后在把同一项目的排在一起,然后用字典记录每一个项目的起始行和终止行不就可以循环了

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-4 09:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 心电感应 于 2022-11-16 14:14 编辑
orr89 发表于 2020-11-4 09:03
先乱序排,然后在把同一项目的排在一起,然后用字典记录每一个项目的起始行和终止行不就可以循环了

我不会了,请老师帮帮设计 下!麻烦了!具体表格我发上来,请老师看看该如何设计!

TA的精华主题

TA的得分主题

发表于 2020-11-4 11:24 | 显示全部楼层
newlove 发表于 2020-11-4 09:19
我不会了,请老师帮帮设计 下!麻烦了!具体表格我发上来,请老师看看该如何设计!

Sub 排列()

    Sheet1.Activate
    Sheet1.Range("A2:H" & Sheet1.[a60000].End(xlUp).Row).Select
    With Sheet1.Sort
        With .SortFields
            .Clear
            .Add Key:=Range("H2:H" & Sheet1.[a60000].End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:=""
        End With
        .Header = xlNo
        .Orientation = xlSortColumns
        .MatchCase = False
        .SortMethod = xlPinYin
        .SetRange Rng:=Selection
        .Apply
    End With '辅助列乱序
   
    arr = Sheet1.Range("a1").CurrentRegion
   
    Sheet3.Activate
    With Sheet3
        .Cells.Clear
        lie = 1
        zu = 1
        hang = 2
        For 项目列 = 5 To 7
                If .Cells(.[b60000].End(xlUp).Row, "B") = "" Then
                   .Cells(.[b60000].End(xlUp).Row, "A") = arr(2, 4)
                   .Cells(.[b60000].End(xlUp).Row, "B") = arr(1, 项目列)
                Else
                   .Cells(.[b60000].End(xlUp).Row + 2, "A") = arr(2, 4)
                   .Cells(.[b60000].End(xlUp).Row + 2, "B") = arr(1, 项目列)
                   hang = hang + 5
                   zu = 1
                   lie = 1
                End If
            For a = 2 To UBound(arr)
                If arr(a, 项目列) <> "" Then
                    lie = lie + 1
                    If lie = 8 Then
                        lie = 2
                        hang = hang + 3
                        zu = zu + 1
                    End If
                    .Cells(hang, 1) = zu & "组"
                    .Cells(hang, lie) = lie - 1 & "道"
                    .Cells(hang + 1, lie) = arr(a, 3)
                    .Cells(hang + 2, lie) = arr(a, 项目列)
                End If
            Next
        Next
    End With
   
End Sub '仅供参考,自己修修改改吧,每一次需求和表都不一样,去淘宝找个代工吧。

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-5-10 04:40 , Processed in 0.036552 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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