ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 列数据转行数据的实现方式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-11-21 08:09 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 jjb201 于 2023-11-22 00:10 编辑


2023.11.22
现在实现了数据写入,但有个bug,当输入的连续打印的记录数小于每页数量,或连续记录数不是每页数量的倍数,则最后一页无法正常输出,直接跳过了生成PDF文件的循环语句

PS:附件文档已更新,在已有的代码上修改,谢谢






2023.11.21
源数据在“目录”表格中

日常需要打印报告,报告生成页在“打印页面”;
需要实现如下功能:
先设置需要开始打印的产品编号,再确认需要打印产品的数量,然后确认每页需要打印的产品数量,自动算出共需要打印多少页(已通过函数实现)
点打印按钮后,将输入的起始编号自动填充到打印页面的B2列,然后自动将目录中B2对应编号下面的多条记录的编号分别填充到C2\D2\E2\F2\G2列
第一页打印出来后,自动依次将剩余的编号再填充B2\C2\D2\E2\F2\G2,如此循环直至需要打印的数量全部输出结束

测试文档.rar

25.58 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2023-11-21 09:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
按不动哎,比如,编号2,在目录中只有一行数据的呀,哪里找对应编号下面的多条记录的编号呢????

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-21 09:58 | 显示全部楼层
本帖最后由 jjb201 于 2023-11-21 10:04 编辑
3190496160 发表于 2023-11-21 09:12
按不动哎,比如,编号2,在目录中只有一行数据的呀,哪里找对应编号下面的多条记录的编号呢????

挨个填充,相当于在B2填写目录中第一行的产品编号,C2行填写第二行的产品编号,依次下去,到G2填写第6行的产品编号,这一页就输出打印,然后接着在B2中填写第7行的编号,C2填写第8行的编号,直至所有需要打印的记录打印完成

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-21 10:50 | 显示全部楼层
借助AI工具和网上查找的代码:
Sub 按钮1_Click()
startSourceRow = 1  '原始数据的起始行
endSourceRow = 11  '原始数据的结束行

eachWidth = 4   '多行多列数据中每行数据的最大列数
startRow = 1    '多行多列数据的起始行
StartCol = 3    '多行多列数据的起始列

currRow = startRow  'currRow为当前运行到的多行多列数据的行数
currCol = StartCol  'currCol为当前运行到的多行多列数据的列数
With Sheet1
For i = startSourceRow To endSourceRow Step 1

     Sheets("Sheet2").Cells(currRow, currCol).Value = Range("A" & i).Value    '将原始列中的数据赋值给多行多列区域中的单元格
    currCol = currCol + 1
    If i Mod eachWidth = 0 Then '如果当前运行到的行数刚好是eachWidth的倍数则进行换行
        currRow = currRow
        currCol = StartCol
    End If

Next i
End With
End Sub



有2个问题,1是按钮放在sheet1上时,运行宏可以在sheet2中生成数据,但按钮放在sheet2表中时,点击没反应,加了个with sheet1,不知道是不是位置放的不对还是其他问题,还是没有数据;
2、当需要打印的总数/每页打印数目不是整除的时候,最后一页的时候,会将本应该空着的列写入了本次循环的第一条、第二条等数据

TA的精华主题

TA的得分主题

发表于 2023-11-21 20:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-21 22:01 | 显示全部楼层
顶起来!!有人指定下问题点吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-22 00:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
3190496160 发表于 2023-11-21 09:12
按不动哎,比如,编号2,在目录中只有一行数据的呀,哪里找对应编号下面的多条记录的编号呢????

摸索了下,现在可以实现循环取数了,现在还有一个bug,如果连续输出记录小于5,或者大于5但不是5的倍数的时候,最后一页没有输出打印,可否帮忙修改下代码,谢谢!

已现在这个附件为准!

测试文档.rar

25.58 KB, 下载次数: 7

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-22 00:05 | 显示全部楼层
循环写入数据可以了,现在有一个问题,就是连续打印的数量小于每页数量或者连续打印的数量不是每页数量的整数倍时,最后一页没有输出,请人帮忙修改下代码,谢谢

现在每页为5个记录

以附件的表格为准,谢谢,静候佳音!

测试文档.rar

25.58 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2023-11-23 12:27 | 显示全部楼层
你现在是 每次5个数据填完就导出PDF, 如果你的序号都是连续的,可以在for循环下加个计数变量,当变量数和你 总需打印行数相同时 也加入 导出PDF那个语句判断里
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 02:06 , Processed in 0.038113 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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