Excel精英培训网

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

[已解决]修整表格中的错行

[复制链接]
发表于 2015-2-12 14:17 | 显示全部楼层 |阅读模式
本帖最后由 billyzhang0609 于 2015-2-13 14:06 编辑

如附件所示:

          表格中的行有时候会 ‘错行’ ,我要把错行批量修复成正确的行。

          唯一知道的线索就是错误的行如果能从右向左黏贴在最后一列的单元格,就能修复错误。

          那么用VBA怎么实现?
最佳答案
2015-2-12 21:12
  1. Sub Macro1()
  2. Dim i&, lie&
  3. Application.ScreenUpdating = False
  4. For i = 5 To Range("a65536").End(xlUp).Row - 1 Step 2
  5.     lie = Cells(i, Columns.Count).End(xlToLeft).Column + 1
  6.     Cells(i + 1, 1).Resize(1, 30).Copy Cells(i, lie)
  7.     Cells(i + 1, 1).Resize(1, 30) = ""
  8. Next
  9. [a:a].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  10. Application.ScreenUpdating = True
  11. End Sub
复制代码
错行的表.png
修复的表.png

修整表格中的错行.zip

7.47 KB, 下载次数: 14

发表于 2015-2-12 15:39 | 显示全部楼层
实际情况都是这样错位的?

还有别的错位方式吗?
回复

使用道具 举报

发表于 2015-2-12 15:48 | 显示全部楼层
ASDF3FFF.gif

第1次插入后,按F4,将重复之前的操作(插入),

所以B打头的区域,一次次右移...
回复

使用道具 举报

发表于 2015-2-12 15:49 | 显示全部楼层
...
123.gif
回复

使用道具 举报

 楼主| 发表于 2015-2-12 16:29 | 显示全部楼层
爱疯 发表于 2015-2-12 15:48
第1次插入后,按F4,将重复之前的操作(插入),

所以B打头的区域,一次次右移...

7万行。。。。。。。。。
回复

使用道具 举报

发表于 2015-2-12 16:34 | 显示全部楼层
给个十几行实际数据
不方便的数据,替换修改下,主要是要看看错误情况是否只有一种。
免得写完,还改。
回复

使用道具 举报

 楼主| 发表于 2015-2-12 16:38 | 显示全部楼层
爱疯 发表于 2015-2-12 15:39
实际情况都是这样错位的?

还有别的错位方式吗?

反正就是一行的数据断成2行。
还断得不一样,我的例子里面的模型还算是比较理想的。

有没有办法可以从右边往左边黏贴哦?
那就可以做个VBA找到最右边那列单元格为空,
然后将第二行的内容从右向左黏贴,就好了。
回复

使用道具 举报

 楼主| 发表于 2015-2-12 16:44 | 显示全部楼层
爱疯 发表于 2015-2-12 16:34
给个十几行实际数据
不方便的数据,替换修改下,主要是要看看错误情况是否只有一种。
免得写完,还改。

好的,稍等,我打开一个表要好久的。
回复

使用道具 举报

 楼主| 发表于 2015-2-12 16:51 | 显示全部楼层
爱疯 发表于 2015-2-12 16:34
给个十几行实际数据
不方便的数据,替换修改下,主要是要看看错误情况是否只有一种。
免得写完,还改。

截取了表格的一部分
请看附件,正确的行是前面几行,后面是错行。

错行的例子.zip

12.39 KB, 下载次数: 2

回复

使用道具 举报

发表于 2015-2-12 21:12 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim i&, lie&
  3. Application.ScreenUpdating = False
  4. For i = 5 To Range("a65536").End(xlUp).Row - 1 Step 2
  5.     lie = Cells(i, Columns.Count).End(xlToLeft).Column + 1
  6.     Cells(i + 1, 1).Resize(1, 30).Copy Cells(i, lie)
  7.     Cells(i + 1, 1).Resize(1, 30) = ""
  8. Next
  9. [a:a].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  10. Application.ScreenUpdating = True
  11. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 12:02 , Processed in 0.581125 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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