ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何根据原始表关键列性别和组号按模板生成目标表自动加分页符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-29 09:32 | 显示全部楼层 |阅读模式
原始表:姓名,性别,组号,组内序号

模板:每组一页
目标表:各组间加分页符,姓名,性别,报名序号,(表头,性别组号人数红色字) 如何根据原始表关键列性别和组号按模板生成目标表自动加分页符.rar (20.05 KB, 下载次数: 8)

TA的精华主题

TA的得分主题

发表于 2024-4-29 15:08 | 显示全部楼层
Sub 生成记录表()
Dim ar As Variant
Dim br()
Dim d As Object
Set d = CreateObject("scripting.dictionary")
With Worksheets("原始表")
    r = .Cells(.Rows.Count, 1).End(xlUp).Row
    ar = .Range("a1:l" & r)
End With
For i = 2 To UBound(ar)
    If ar(i, 4) <> "" And ar(i, 7) <> "" Then
        zd = ar(i, 4) & "|" & ar(i, 7)
        If Not d.exists(zd) Then Set d(zd) = CreateObject("scripting.dictionary")
        d(zd)(i) = i
    End If
Next i
With Sheets("目标表")
    .UsedRange.Clear
    rs = 1
    For Each k In d.keys
        n = 0: mc = ""
        ReDim br(1 To UBound(ar), 1 To 6)
        For Each kk In d(k).keys
            mc = ar(kk, 10) & " " & ar(kk, 11) & " " & ar(kk, 12)
            zh = ar(kk, 7)
            n = n + 1
            br(n, 1) = n
            For j = 2 To 4
                br(n, j) = ar(kk, j)
            Next j
            For j = 7 To 8
                br(n, j - 2) = ar(kk, j)
            Next j
        Next kk
        Sheets("模板").Rows("1:14").Copy .Cells(rs, 1)
        .Cells(rs + 1, 2) = "监考组组长:    " & mc
        .Cells(rs + 1, 10) = "性别:" & Left(k, 1) & ",组号" & zh & "人数:" & n
       .Cells(rs + 4, 1).Resize(n, UBound(br, 2)) = br
       rs = rs + 14
    Next k
End With
MsgBox "ok!"
End Sub

TA的精华主题

TA的得分主题

发表于 2024-4-29 15:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-29 15:10 | 显示全部楼层
分页符没必要,只要事先设置好模板中的行高就行了

TA的精华主题

TA的得分主题

发表于 2024-4-29 15:23 | 显示全部楼层
插入分页符一般都是在主标题上方啊,不知楼主究竟想插在何处
插入分页符代码如下:
本示例在单元格 F25 上方添加水平分页符,在其左侧添加垂直分页符。
With ActiveSheet
     .HPageBreaks.Add Range("F25")
     .VPageBreaks.Add Range("F25")
End With

每张工作表最多有 1026 个水平分页符。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-4-29 16:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test2()
  2.     Dim r%, i%
  3.     Dim arr, brr
  4.     Dim d As Object
  5.     Application.ScreenUpdating = False
  6.     Application.DisplayAlerts = False
  7.     Set d = CreateObject("scripting.dictionary")
  8.     With Worksheets("原始表")
  9.         r = .Cells(.Rows.Count, 1).End(xlUp).Row
  10.         arr = .Range("a2:m" & r)
  11.         For i = 1 To UBound(arr)
  12.             xm = arr(i, 4) & "+" & arr(i, 7)
  13.             If Not d.exists(xm) Then
  14.                 Set d(xm) = CreateObject("scripting.dictionary")
  15.             End If
  16.             d(xm)(i) = Empty
  17.         Next
  18.     End With
  19.     With Worksheets("目标表")
  20.         .ResetAllPageBreaks
  21.         .Cells.Clear
  22.         r = 1
  23.     End With
  24.     With Worksheets("模板")
  25.         For Each aa In d.keys
  26.             ReDim brr(1 To 10, 1 To 6)
  27.             m = 0
  28.             For Each bb In d(aa).keys
  29.                 m = m + 1
  30.                 brr(m, 1) = m
  31.                 brr(m, 2) = arr(bb, 2)
  32.                 brr(m, 3) = arr(bb, 3)
  33.                 brr(m, 4) = arr(bb, 4)
  34.                 brr(m, 5) = arr(bb, 7)
  35.                 brr(m, 6) = arr(bb, 8)
  36.             Next
  37.             x = d(aa).keys()(0)
  38.             .Range("a1") = arr(x, 5) & "八年级体育过程性评价成绩记录表"
  39.             With .Range("b2")
  40.                 .Value = "监考组组长:(" & arr(x, 10) & ")(" & arr(x, 11) & ")(" & arr(x, 12) & ")"
  41.                 With .Characters(Start:=7, Length:=Len(.Value) - 6).Font
  42.                     .ColorIndex = 3
  43.                     .Color = -16776961
  44.                 End With
  45.             End With
  46.             With .Range("j2")
  47.                 .Value = "性别:" & arr(x, 4) & Space(1) & "人数:" & m
  48.                 .Font.ColorIndex = 3
  49.             End With
  50.             .Range("g3") = arr(x, 10)
  51.             .Range("i3") = arr(x, 11)
  52.             .Range("k3") = arr(x, 12)
  53.             .Range("a5").Resize(UBound(brr), UBound(brr, 2)) = brr
  54.             .Range("a1:m15").Copy Worksheets("目标表").Cells(r, 1)
  55.             r = r + 14
  56.             With Worksheets("目标表")
  57.                 .HPageBreaks.Add before:=.Rows(r)
  58.             End With
  59.         Next
  60.     End With
  61. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-4-29 16:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-2 10:11 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 04:48 , Processed in 0.035888 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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