Excel精英培训网

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

[已解决]【求助】请问如何将列名相同的一列数据抽取出来

[复制链接]
发表于 2011-6-12 11:13 | 显示全部楼层 |阅读模式
就是在一组无规律的表中,将列名相同的一列数据复制出来

再在空白地方粘贴

附件为实验数据,不知如何将列名为“累计沉降值㎜”的所有列复制出来

谢谢各位大师的帮助,感激不尽

最佳答案
2011-6-12 13:08
本帖最后由 sunjing-zxl 于 2011-6-12 13:09 编辑

回复 reisword 的帖子

上面用技巧给你做的,
下面用VBA给你做

  1. Sub 数据生成()
  2.     Dim Ro As Long, Co As Long, i As Long
  3.     With Sheet1
  4.         Ro = .[A65536].End(xlUp).Row
  5.         For Co = 1 To .[A1].End(xlToRight).Column
  6.             If .Cells(1, Co) = "累计沉降值㎜" Then
  7.                 i = i + 1
  8.                 .Range(.Cells(1, Co), .Cells(Ro, Co)).Copy Sheet3.Cells(1, i)
  9.             End If
  10.         Next Co
  11.     End With
  12. End Sub

  13. Sub 清楚数据()
  14.     Dim Ro As Long
  15.     Dim Co As Long
  16.     With Sheet3
  17.         Co = .[A1].End(xlToRight).Column
  18.         Ro = .[A1].End(xlDown).Row
  19.         .Range(.Cells(1, 1), .Cells(Ro, Co)).ClearContents
  20.     End With
  21. End Sub
复制代码
附件: 实验数据.rar (16.62 KB, 下载次数: 43)

实验数据.rar

13.18 KB, 下载次数: 33

 楼主| 发表于 2011-6-12 11:14 | 显示全部楼层
PS:如果要将这段代码复制到其他表中需要注意什么问题呢?
回复

使用道具 举报

发表于 2011-6-12 12:43 | 显示全部楼层
回复

使用道具 举报

发表于 2011-6-12 13:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunjing-zxl 于 2011-6-12 13:09 编辑

回复 reisword 的帖子

上面用技巧给你做的,
下面用VBA给你做

  1. Sub 数据生成()
  2.     Dim Ro As Long, Co As Long, i As Long
  3.     With Sheet1
  4.         Ro = .[A65536].End(xlUp).Row
  5.         For Co = 1 To .[A1].End(xlToRight).Column
  6.             If .Cells(1, Co) = "累计沉降值㎜" Then
  7.                 i = i + 1
  8.                 .Range(.Cells(1, Co), .Cells(Ro, Co)).Copy Sheet3.Cells(1, i)
  9.             End If
  10.         Next Co
  11.     End With
  12. End Sub

  13. Sub 清楚数据()
  14.     Dim Ro As Long
  15.     Dim Co As Long
  16.     With Sheet3
  17.         Co = .[A1].End(xlToRight).Column
  18.         Ro = .[A1].End(xlDown).Row
  19.         .Range(.Cells(1, 1), .Cells(Ro, Co)).ClearContents
  20.     End With
  21. End Sub
复制代码
附件: 实验数据.rar (16.62 KB, 下载次数: 43)

评分

参与人数 1 +1 收起 理由
reisword + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-6-12 13:23 | 显示全部楼层
回复 sunjing-zxl 的帖子

膜拜,太感谢大师了,态度好,又仔细,非常的感谢

嗯,您的VBA的代码就非常明朗,看起来没多大问题。

再次非常感谢


回复

使用道具 举报

发表于 2011-6-12 14:41 | 显示全部楼层
不错,学习一下
回复

使用道具 举报

发表于 2011-6-12 14:41 | 显示全部楼层
学习一下!

  1. Sub 复制指定列()
  2. Dim iCol As Integer
  3. Dim i As Integer
  4. Dim iCount As Integer
  5. Application.ScreenUpdating = False
  6. Sheet1.Range("A1").CurrentRegion.Copy Sheet3.Range("A1")
  7. With Sheet3
  8.      iCol = .[iv1].End(xlToLeft).Column
  9.      For i = iCol To 1 Step -1
  10.         If .Cells(1, i) <> "累计沉降值㎜" Then
  11.            .Columns(i).Delete xlToLeft
  12.         End If
  13.      Next
  14. End With
  15. Application.ScreenUpdating = True
  16. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 00:40 , Processed in 0.360227 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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