Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8308|回复: 46

[已解决]你好,求VBA高手帮忙编辑下

  [复制链接]
发表于 2012-4-7 08:35 | 显示全部楼层 |阅读模式
本帖最后由 upczxf 于 2012-4-7 11:03 编辑







我想实现如下功能。1、自动复制表格中Sheet1. 保证表格大小不变,
                             2、表格中分部工程名称管号单根管长标段连续里程焊口编号  自动调用数据中数据
                        3、数据中有很多数据,为了使上传附件不太大。删除了一部分数据,当数据超出表格内容时,自动生成下一张表格,本人编辑了一小部分,但是不够完整,求大神帮忙


最佳答案
2012-4-7 21:18
upczxf 发表于 2012-4-7 18:01
我想通过宏命令实现如下功能:
1、复制表格SHEET1,
2、在复制的SHEET1中,填充数据,具体规则是这样的。 ...

试试这个代码
直接运行 XieRu 过程即可!


  1. Dim TorF As Boolean, Hx As Long, Sh As Worksheet
  2. Sub CopyBiao()
  3.   If Not TorF Then MsgBox "请运行 XirRu 程序!", , "错误": Exit Sub
  4.   Sheets("Sheet1").Copy Sheets(Sheets.Count)
  5.   Set Sh = Sheets(Sheets.Count - 1)
  6.   Sh.Name = "施工记录" & Sheets.Count - 2
  7.   Hx = 8
  8. End Sub
  9. Sub XieRu()
  10. Dim X As Long, Arr As Variant
  11.   TorF = True
  12.   With Sheets("数据")
  13.     Hx = .Range("A65536").End(xlUp).Row
  14.     Arr = .Range("A2:E" & Hx)
  15.   End With
  16.   Call CopyBiao
  17.   For X = 1 To UBound(Arr)
  18.     With Sh
  19.       .Cells(Hx, "A") = Arr(X, 5)
  20.       .Cells(Hx - 1, "C") = Arr(X, 2)
  21.       .Cells(Hx - 1, "D") = Arr(X, 3)
  22.       .Cells(Hx, "E") = Arr(X, 4)
  23.       Hx = Hx + 2
  24.       If X = UBound(Arr) Then .Range("C5") = Arr(X, 1): Exit For
  25.       If Arr(X, 1) <> Arr(X + 1, 1) Then .Range("C5") = Arr(X, 1): Call CopyBiao
  26.     End With
  27.   Next
  28. End Sub

复制代码

线17 管道竣工地理信息表.zip

98.77 KB, 下载次数: 40

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-4-7 16:43 | 显示全部楼层
有附件没示例说明,具体效果和操作方式都还得猜!!不好办啊
回复

使用道具 举报

 楼主| 发表于 2012-4-7 16:53 | 显示全部楼层
无聊的疯子 发表于 2012-4-7 16:43
有附件没示例说明,具体效果和操作方式都还得猜!!不好办啊

附件里面我编辑了个宏,但是实现不了功能。我想实现的是保持表单大小尺寸不变,然后编辑个宏命令,里面的焊口、管号、长度、里程引用数据表中的相应内容,当表格填充满后,自动生成下一个表格(与样表一模一样),然后继续导入焊口、管号、长度、里程等内容
回复

使用道具 举报

 楼主| 发表于 2012-4-7 16:53 | 显示全部楼层
无聊的疯子 发表于 2012-4-7 16:43
有附件没示例说明,具体效果和操作方式都还得猜!!不好办啊

您电话多少,方便接听的话我给你打个电话说明下
回复

使用道具 举报

 楼主| 发表于 2012-4-7 16:58 | 显示全部楼层
分部工程名称引用数据中的分部工程名称,当焊口号对应的分部名称不一致时,则自动生成下一个表单,从不一致的数据继续重复引用的工作。
回复

使用道具 举报

发表于 2012-4-7 17:11 | 显示全部楼层
附件里最好有做好的效果图,详细说明数据对应关系。
回复

使用道具 举报

发表于 2012-4-7 17:12 | 显示全部楼层
upczxf 发表于 2012-4-7 16:58
分部工程名称引用数据中的分部工程名称,当焊口号对应的分部名称不一致时,则自动生成下一个表单,从不一致 ...

当表格填充满后,自动生成下一个表格(与样表一模一样),
这个问题很好理解,也很好解决
下面两个问题呢?
里面的焊口、管号、长度、里程引用数据表中的相应内容
这个是怎么个引用法?
"输入工程名称",就把该工程名称的所有内容都输入到下面?
你的表为啥要那样交叉设计?这样的设计对于处理数据来说是个麻烦事!就不能放在一行里面啊?
分部工程名称引用数据中的分部工程名称,当焊口号对应的分部名称不一致时,则自动生成下一个表单,从不一致的数据继续重复引用的工作。
当 <焊口号对应的分部名称不一致时>
你的 焊口号是不重复的,而工程名称却是重复的!!所以这点是不是描述反了呢??
回复

使用道具 举报

 楼主| 发表于 2012-4-7 17:17 | 显示全部楼层
无聊的疯子 发表于 2012-4-7 17:12
当表格填充满后,自动生成下一个表格(与样表一模一样), 这个问题很好理解,也很好解决 下面两个问题呢? ...

工程名称那个不用管,主要管分部工程名称、焊口、管号、长度、里程这几个数据。当一张表格中出现焊口所对应的分部工程名称不同时,则生成下一个表格,同时继续引用分部工程名称、焊口、管号、长度、里程这几个数据
回复

使用道具 举报

发表于 2012-4-7 17:23 | 显示全部楼层
upczxf 发表于 2012-4-7 17:17
工程名称那个不用管,主要管分部工程名称、焊口、管号、长度、里程这几个数据。当一张表格中出现焊口所对 ...

你还是没有说你是怎么操作的,具体操作那个单元格,然后想要什么样的效果??

只是说"当一张表格中出现焊口所对应的分部工程名称不同时,则生成下一个表格,同时继续引用分部工程名称、焊口、管号、长度、里程这几个数据"

好比你老总叫你去领金奖,而他又没给发金奖的人讲这个事,你觉得你去了就能领到么??

如果问题描述得不清楚,是没有办法写代码的!!所以你还是好好想想怎么描述才能让人一眼就看得明白吧
回复

使用道具 举报

 楼主| 发表于 2012-4-7 17:30 | 显示全部楼层
我想通过一个宏命令,使之先复制表格SHEET1,并保持该表格大小不变,第二步是在复制过的SHEET1中采取调用函数,如SHEET1中的焊口、管号、长度、里程链接数据中相应数据。第三部是如果焊口编号对应的分部工程名称不一致时,则终止此循环,同时进行再次复制表格,然后继续调用焊口、管号、长度、连续里程等信息。这样表述您明白了吗
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 17:31 , Processed in 0.403804 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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