ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 在VBA中如何去识别需要的列,并将不需要的列删除掉?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-1-30 11:53 | 显示全部楼层 |阅读模式
在VBA中如何去识别需要的列,并将不需要的列删除掉?

从某系统中导出的数据,在进行数据处理时,只有“产品名称、产品规格、物料编号、物料名称、规格型号、计量单位、实发数量”这几列有用,其他的列都要删除,由于每次导出的数据的列数不是固定的,比如有时候如表1有33列,有的可能如表2是28列、或者36列……而且每个需要的两个列之间的间隔也不同,比如在表一中“产品规格”与“物料编号”之间隔了5列,但是在表2中只隔了3列。在VBA中如何去识别需要的列,并将不需要的列删除掉?

盼高手解惑
详见附件

[ 本帖最后由 xmike1 于 2011-1-30 11:55 编辑 ]

识别有用列.rar

4.47 KB, 下载次数: 80

TA的精华主题

TA的得分主题

发表于 2011-1-30 12:42 | 显示全部楼层

表头在第三行即可

识别有用列.rar

11.32 KB, 下载次数: 75

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-1-30 12:44 | 显示全部楼层
  1. Sub yy()
  2. Dim Sht As Worksheet, i&, aa$, Myc%
  3. aa = "产品名称,产品规格,物料编号,物料名称,规格型号,计量单位,实发数量"
  4. Application.ScreenUpdating = False
  5. For Each Sht In Sheets
  6.     Sht.Activate
  7.     Myc = [iv3].End(xlToLeft).Column
  8.     For i = Myc To 1 Step -1
  9.         If InStr(aa, Cells(3, i)) = 0 Then
  10.             Cells(1, i).EntireColumn.Delete
  11.         End If
  12.     Next
  13. Next
  14. Application.ScreenUpdating = True
  15. End Sub
复制代码

识别有用列130.rar

9.46 KB, 下载次数: 203

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-30 17:55 | 显示全部楼层
谢谢,楼上的两位高手,
3楼的我试过了,很正确。
2楼的附件我下载不了,不过还是很感谢。

TA的精华主题

TA的得分主题

发表于 2011-1-30 22:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
3楼大侠

我学习了下你附件中的vba,很是佩服。有一点疑惑。
你的那个 按钮1 是怎么放在表格上的。看代码也看不到。请教下

TA的精华主题

TA的得分主题

发表于 2011-1-31 08:15 | 显示全部楼层
右键点击菜单下的空白处,在快捷菜单中选择窗体工具栏,在窗体工具栏上左键点击按钮控件,然后就可在表格中拖拉出那个按钮了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-13 20:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼上各位高手,
接删除无用列后,
如果需要的列如“规格型号”、“实发数量”等缺少,
就在删除无用列后在其应有的顺序列用红色字体将其标示出来,
起到提醒作用,如同表3的效果(详见附件2)
又该如何用VBA编程呢?
希望将删除无用列和提示缺少列的程序写在一起。
先谢谢了

[ 本帖最后由 xmike1 于 2011-2-13 21:12 编辑 ]

识别有用列,并提示缺少的列.rar

4.99 KB, 下载次数: 26

识别有用列,并按应有顺序提示缺少的列.rar

5.04 KB, 下载次数: 33

TA的精华主题

TA的得分主题

发表于 2011-2-14 12:42 | 显示全部楼层
  1. Sub yy()
  2. Dim Sht As Worksheet, i&, aa$, Myc%, j%, bb, r1
  3. aa = "产品名称,产品规格,物料编号,物料名称,规格型号,计量单位,实发数量"
  4. Application.ScreenUpdating = False
  5. For Each Sht In Sheets
  6.     Sht.Activate
  7.     Myc = [iv3].End(xlToLeft).Column
  8.     For i = Myc To 1 Step -1
  9.         If InStr(aa, Cells(3, i)) = 0 Then
  10.             Cells(1, i).EntireColumn.Delete
  11.         End If
  12.     Next
  13.     bb = Array("规格型号", "实发数量")
  14.     For j = 0 To 1
  15.         Set r1 = Rows(3).Find(bb(j))
  16.         If r1 Is Nothing Then
  17.             If j = 0 Then
  18.                 Columns("E:E").Insert Shift:=xlToRight
  19.                 Range("E3").Select
  20.                 [e3] = bb(0)
  21.                 Selection.Font.ColorIndex = 3
  22.             Else
  23.                 Range("g3").Select
  24.                 [g3] = bb(1)
  25.                 Selection.Font.ColorIndex = 3
  26.             End If
  27.         End If
  28.     Next
  29. Next
  30. Application.ScreenUpdating = True
  31. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-15 20:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-4-1 11:50 | 显示全部楼层
谢谢楼上的高手蓝桥!
我也有楼主的问题,照蓝桥的方法做很好用,但我发现一个问题:我的表删除不需要的列后如下:
日期        单据编号        产品名称        购货单位        发货仓库        单位        实发数量        发货        交货地点

其中的"单位"和"发货"不是我需要的但没有被删除,我怀疑是InStr函数查找时的问题,但不知如何解决?
请蓝桥高手指点一下,谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-10 16:55 , Processed in 0.034158 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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