ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 增加判断语句

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-5 23:12 | 显示全部楼层 |阅读模式
本帖最后由 寒羽良 于 2018-7-6 12:25 编辑

各位老师好。工作表一的数据,是每天都要做很多的,需要排版打印出来。很麻烦浪费时间 。
我做了一个简单的宏,自动生成表格。但表一A列的数值,正常是三个。但有时会有两个。需要 在只有两个下面加入一行空白行。最终效果如工作表二。
麻烦老师帮忙看一下。另外代码如果老师可以帮忙优化一下,就最好了。

RDC.rar

25.11 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2018-7-6 06:01 | 显示全部楼层
表1现有数据16行,最多也就18行。
你说表1有很多,二个含义:一是可能出现100行、500行、1000行.....,二是每次最多18行,有N次?

你的宏功能,主要是格式、函数的设置。如果版面数量可控的话,且不采用复制-粘贴方式,这些可以是预制的,第一次设置后,今后是不会变的,故不需要每次运行。你只要用一个数组,将表1的数据幅值到表2的A:D列即可。

Sub dfdld()
Dim i, ir, arr, brr, p, q
Dim dc As Object
Set dc = CreateObject("scripting.dictionary")

'只有2行数据的判断及插入行
ir = Range("a60000").End(xlUp).Row
arr = Range("a1:e" & ir)
For i = 1 To ir
dc(arr(i, 1)) = dc(arr(i, 1)) + 1
Next
p = dc.keys
q = dc.items
For i = 0 To UBound(p)
If q(i) = 2 Then
ir = ir + 1
Cells(ir, 1) = p(i)
End If
Next
Range("a1").CurrentRegion.Sort Range("a1")

'取出值并赋值到表2
arr = Range("a1:b" & ir)
brr = Range("d1:e" & ir)

Sheet2.Range("a3").Resize(ir, 2) = arr
Sheet2.Range("c3").Resize(ir, 2) = brr

Set dc = Nothing
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-6 10:07 | 显示全部楼层
本帖最后由 寒羽良 于 2018-7-6 12:12 编辑
smhf_6 发表于 2018-7-6 06:01
表1现有数据16行,最多也就18行。
你说表1有很多,二个含义:一是可能出现100行、500行、1000行.....,二 ...


老师您好.感谢您的帮助,非常好用。

TA的精华主题

TA的得分主题

发表于 2018-7-6 18:31 | 显示全部楼层
补充一件事: 处理后的结果不一定要放在表2,可以另外设置一个工作簿,这个工作簿不带宏,是结果,发给各部门的。
当然,第一次是需要手工复制表2。粘贴到该工作簿,保证格式、函数不变。
然后,用宏,打开该工作簿赋值即可。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-4 12:39 , Processed in 0.020396 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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