【一个小Demo】用VBA对EXCEL进行操作:通过某一列的值寻该值所在行的所有内容,且。。。

【⼀个⼩Demo】⽤VBA对EXCEL进⾏操作:通过某⼀列的值寻该值所在⾏
的所有内容,且。。。
VBA(Visual Basic for Applications)是Visual Basic的⼀种宏语⾔,是在其桌⾯应⽤程序中执⾏通⽤的⾃动化(OLE)任务的编程语⾔。主要能⽤来扩展Windows的应⽤程序功能,特别是Microsoft Office软件。它也可说是⼀种应⽤程式视觉化的 Basic 脚本。
1993年由微软公司开发的应⽤程序共享⼀种通⽤的⾃动化语⾔--------即Visual Basic for Application(VBA),实际上VBA是寄⽣于VB应⽤程序的版本。1994年发⾏的Excel 5.0版本中,即具备了VBA的宏功能。
这个DEMO其实很简单,但苦于从没有接触过,且规则和我平时学的⼤不相同,写起来⼗分憋屈。
我是⼀边学⼀边写,思路到哪⾥,就根据那个思路去看帮助⽂档。
功能⽰意
sheet1中填写需要提取的列值
sheet2中是需要提取的表
sheet3是提取后的结果
⼤致思想
通过filedialog打开任意⽬录下任意数量的任意⼯作簿
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
For lngCount =1 To .unt'遍历,可以打开多个⼯作簿'
path =.SelectedItems(lngCount)
Workbooks.Open(path).Activate
将当前选中路径打开并设置为活动簿
path =.SelectedItems(lngCount)
Workbooks.Open(path).Activate
将表属性名称复制到sheet3
Sheets("Sheet2").Select'对sheet2进⾏操作'
Rows(1).Copy 'row是⾏'
Sheets("Sheet3").Select
Rows(1).Select
ActiveSheet.Paste'粘贴到当前活动表'
开始从sheet1第2⾏与sheet2除第⼀⾏外所有⾏进⾏⽐较,相同进⾏复制粘贴,直⾄sheet1单元格内容为空。
Sheets("sheet1").Select
i =1
For Each x In Range("A2:A65536")
If x.Value <>"" Then
i = i +1
arr(i)=Range("A"& i)
Sheets("Sheet2").Select
For ii =2 To 65536
If Range("A"& ii)=arr(i) Then
Rows(ii).Select
Selection.Copy
Sheets("Sheet3").Select卢浮宫魅影
Rows(i).Select
ActiveSheet.Paste
End If
Next
End If
Sheets("sheet1").Select
Next
总和
Sub Copy2()
Dim lngCount As Long
甘巴豆Dim arr(500) As Variant
Dim path As String凝胶材料
Dim x As Range
Dim i, count As Integer
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
For lngCount =1 To .unt
' MsgBox .SelectedItems(lngCount)’
path =.SelectedItems(lngCount)毛利润
Workbooks.Open(path).Activate
Sheets("Sheet2").Select
Rows(1).Copy我所认识的蔡孑民先生
Sheets("Sheet3").Select
Rows(1).Select
ActiveSheet.Paste
表膜Sheets("sheet1").Select
i =1
For Each x In Range("A2:A65536")
If x.Value <>"" Then
i = i +1
arr(i)=Range("A"& i)
Sheets("Sheet2").Select
For ii =2 To 65536
If Range("A"& ii)=arr(i) Then
Rows(ii).Select
Selection.Copy
Sheets("Sheet3").Select
Rows(i).Select
ActiveSheet.Paste
End If
Next
End If
Sheets("sheet1").Select
Next
Next lngCount
End With
End Sub
最后,这个demo虽⼩,但运⾏很占内存,如果U盘读写速度不是很快,不建议直接在U盘下进⾏,容易死机。

本文发布于:2024-09-21 17:53:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/163347.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   打开   U盘   任意   提取   接触   任务
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议