ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何根据原始表和参数表生成目标表各试场名单202401

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-22 09:57 | 显示全部楼层 |阅读模式
原始表:关键列编号(考号)、姓名

参数表:试场号        试场名称        编号起        编号止        负责人        带队        是否输出(若为是,则输出)        是否已输出
目标表:各试场的明细详情:试场人数、试场名称、编号起止、负责人、带队,名单;
名单每行5个折行(上行为姓名,下行为考号);
各试场间空2行 如何根据原始表和参数表生成目标表各试场名单202401.rar (4.36 KB, 下载次数: 10)


TA的精华主题

TA的得分主题

发表于 2024-1-22 10:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
参与一下。

如何根据原始表和参数表生成目标表各试场名单202401.rar

20.92 KB, 下载次数: 32

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-22 10:52 | 显示全部楼层
在M1复制表头,如附图所示:
2024-1-22考试1.png
录入代码,执行即可。
2024-1-22考试.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-22 11:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
关键字:SQL+数组
GIF 2024-01-22 11-58-16.gif

各试场名单202401.zip

23.6 KB, 下载次数: 8

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-22 11:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub limonet()
    Dim Cn As Object, StrSQL$, Arr(1 To 2, 1 To 6) As Variant, Rst As Object, S$, h%, i%, j%, k%, L%
    Set Cn = CreateObject("Adodb.Connection")
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
    S = "试场号,编号起止,带队,试场名称,人数,负责人"
    For i = 1 To 2
        For j = 1 To 5 Step 2
            Arr(i, j) = Split(S, ",")(k): k = k + 1
        Next j
    Next i
    With Sheet2
        For h = 2 To .Range("A65536").End(xlUp).Row
            Arr(1, 2) = .Cells(h, "A"): Arr(2, 2) = .Cells(h, "B")
            Arr(1, 4) = .Cells(h, "C") & "-" & .Cells(h, "D"): Arr(2, 4) = .Cells(h, "D") - .Cells(h, "C") + 1
            Arr(1, 6) = .Cells(h, "F"): Arr(2, 6) = .Cells(h, "E")
            If L Then
                L = L + 4
            Else
                L = L + 1
            End If
            Cells(L, "G").Resize(2, 6) = Arr
            StrSQL = "Select 学生姓名,考号 From [原始表$] Where 考号 Between " & Replace(Arr(1, 4), "-", " And ")
            Set Rst = Cn.Execute(StrSQL)
            Do Until Rst.EOF
                L = L + 3
                Cells(L, "G").Resize(2, 5) = Rst.GetRows(5)
            Loop
        Next h
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-22 16:32 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 03:35 , Processed in 0.035075 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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