如何用VBA实现在多个sheet中进行模糊查询,并将包含关键字的一整行复制至指定位置?
Sub sousuo() Dim r As Long Dim c As Long Dim str As String Dim rng As Range str = InputBox("输入搜索内容") If Len(str) = 0 Then Exit Sub c = Sheets("Sheet2").Range("A65536").End(xlUp).Row Sheets("汇总").Activate For r = 1 To [A65536].End(xlUp).Row Set rng = Rows(r).Find(str, LookIn:=xlValues, LookAt:=xlPart) If Not rng Is Nothing Then Rows(r).Copy c = c + 1 Worksheets("Sheet2").Range("A" & c).PasteSpecial _ Paste:=xlPasteAll, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End If Next Application.CutCopyMode = FalseEnd Sub
不难实现,但代码就懒得写了。
步骤:
1、利用INPUTBOX()获得想查询的内容,并存放到局部变量INPUTDATA 中
2、用DIM MYRANGE AS RANGE 和以下语句组合进行查找
Set MyRange = Sheets("工作表名称").Cells.Find(what:=INPUTDATA, After:=ActiveCell, LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False)
3、用条件语句进行判断是否找到或符合
If MyRange Is Nothing Then
MsgBox "没找到符合条件的记录!"
.....
else
找到的话,进行相应的单元格赋值操作
.....
endif
4、用将上述步骤嵌套到一个循环语句内,以便继续查找。
Sub MySearch()
Dim ws(6) As Worksheet
Dim c1 As Range, c2 As Range
Dim r
Set ws(1) = Worksheets("Sheet1") ' 请自行修改为实际的工作表名
Set ws(2) = Worksheets("Sheet2") ' 请自行修改为实际的工作表名
Set ws(3) = Worksheets("Sheet3") ' 请自行修改为实际的工作表名
Set ws(4) = Worksheets("Sheet4") ' 请自行修改为实际的工作表名
Set ws(5) = Worksheets("Sheet5") ' 请自行修改为实际的工作表名
Set ws(6) = Worksheets("Sheet6") ' 请自行修改为实际的工作表名
ws(6).Cells.Clear
Set c2 = ws(6).Range("A1")
For r = 1 To 1000 ' 由于未说明Sheet5中A列关键字的行数,且其中有空行,请自行修改为实际的行数
Set c1 = ws(5).Range("A" & r)
If c1 Like "1*" Then
ws(3).Cells.Find(c1, lookat:=xlWhole).EntireRow.Copy Destination:=c2
ElseIf c1 Like "05*" Then
ws(1).Cells.Find(c1, lookat:=xlWhole).EntireRow.Copy Destination:=c2
ElseIf c1 Like "0*" Then
ws(2).Cells.Find(c1, lookat:=xlWhole).EntireRow.Copy Destination:=c2
ElseIf c1 <> "" Then
ws(4).Cells.Find(c1, lookat:=xlWhole).EntireRow.Copy Destination:=c2
End If
Set c2 = c2.Offset(1, 0)
Next r
End Sub
Excel VBA快速学习(基础篇)
打开VBA编辑器:通过功能区或快捷键进入。插入新模块:在工程列表中插入模块,如模块1,并修改名称。打开模块:双击模块1,进入代码编辑器。创建基本宏:编写Sub MyCode()和End Sub,这是过程的开始和结束。编写实体代码:在Sub和End Sub之间添加实际操作内容。运行代码:点击运行按钮或F5,查看结果。总结...
VBA EXCEL 多表查询功能
如果是在固定在SHEET1工作表A1单元格输入查询内容的,那就用工作表Change事件。方法:右键单击SHEET1工作表标签,在右键菜单中选择“查看代码”,在出现的工作表代码存放的编辑窗口中复制粘贴以下代码:Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address <> "$A$1" Then Exit Sub ...
请问: 一、如何实现在excel的一个单元格内输入两个以上的数字 (例如...
如果如果只是E3单元格是这样的设置,可以考虑使用“定义名称”,假设名称定义为“DDD ”,在引用位置输入:=EVALUATE(SUBSTITUTE(SUBSTITUTE(Sheet1!$E$3" ","+"),"+-","-"))这样DDD就表示E3单元格内的求和了,比如在A1输入:=ddd+1 就等于9+1=10 2、第二个问题,编写VBA,对比每个表相应的...
excel如何使用VBA编写重复项根据文本不同显示不同颜色?
VBA是可以写的。但是要有具体的表和具体的要求。需要可私信。VBA代码不免费。写这个代码,需要根据具体的表写的。如果凭空构建表写,代码拿过去也未必适合你的要求。
excel VBA用何种代码实现调用word中的内容?具体是如何打开word文档以 ...
只要定义一个Word.Application对象,Set WordApp = CreateObject("Word.Application")然后操作这个WordApp 对象就可以了,就像在Word中使用VBA一样,打开文件用 WordApp.Documents.Open 文件路径 定位主要用 WordApp.Selection.Move系列指令,也可以用WordApp.Selection.Goto 具体的你可以用录制宏的方法在...
excel vba 编程时实现每操作几步清空缓存的功能
1、关闭Excel,就是关闭xmlhttp对象。2、 post 不会从缓存读取。3、 查看一下协议里面的response . status, readystate 等响应代码和理解代码的含义。比如301, 407等。具体如下例:If http.Status <> 200 Then MsgBox "readyState: " & http.readyState & vbCrLf & "Status: " & http.Status ...
写一个宏,使一个excel表中的几个sheet能通过选取一定的内容生成一个新...
7、如果在一个Excel文件中含有多个工作表,如何将多个工作表一次设置成同样其方法是:选取“工具”菜单中的“宏”命令,执行“记录新宏”,记录好后
excel中vba变量类型和dim语句进行一些小结
Dim sName As String:申明sName变量为字符串类型。如果在语句中没有提供数据类型,变量将被指定为Variant类型,因为VBA中默认的数据类型是Variant。必须指定数据类型的第一个原因是,Variant数据类型占用的存储空间较大,即使没有给Variant类型的变量赋值,它也要占用16个字节或者22个字节。第二个原因是,...
各位网友, 在EXCEL VBA中 1给一个生成100个随机整数的代码(1到1000的...
Randomize必须要用,它是用来初始化随机种子的(基本上所有语言中都有类似语句),不用这个你每运行这个程序,得到的随机数结果就是会一样的,比如第一次10,第二次8等等。
VBA开发需要什么软件环境?
VBA全称是Visual Basic for Application,是新一代标准宏语言,具有以下特征:(1)VBA是一种解释性语言。(2)VBA是一种面向对象的语言。(3)VBA支持可视化的编程环境。(4)VBA不能单独被执行,只能被office程序(Word、Excel、Access和PowerPoint等)所调用。(5)VBA是事件驱动的。所以,VBA开发需要...
帅胜养心: 要让代码能在多个工作表中运行,可以将代码直接写入到Thisworkbook工作表中或者插入模块,放到模块中 例如如下代码,放到模块中 sub main() msgbox range("A1") end sub 试一下就知道,在哪个工作表中执行,就会显示哪个工作表的A1单元格的值,也就是说,这段代码可以在多个工作表中运行
长沙市18020864762: 如何用VBA语言将多个EXCEL表中不同sheet表汇总到一个excel的不同sheet表中 - ?
帅胜养心: 1、打开需要汇总分析的Excel表格,选择Excel表格上方的“开发工具”选项. 2、然后点击“宏”按钮进行程序编写. 3、然后输入汇总程序的名称,点击编辑按钮. 4、写入程序代码,这里利用的是Do loop until和IF then 语句.汇总的要求为筛选出表格中男性、本科学历、在岗人员的名单. 5、在开发工具选项中选择插入一个按钮控件. 6、选中插入的按钮控件,单击鼠标右键选择“指定宏”选项. 7、将编写的汇总程序制定至按钮控件上,然后点击确定按钮. 8、点击按钮控件即可利用ExcelVBA程序完成对表格的汇总分析.
长沙市18020864762: 一个VBA程序怎么处理多个excel 表格 - ?
帅胜养心: 处理多个Excel文件时,将文件依次打开,然后再利用代码处理数据即可 下面代码为打开Excel文件,并提取sheet1中的第一行数据到本表中: Sub main() f = Dir(ThisWorkbook.Path & "\*.xlsx")'打开制定文件夹中的所有Excel文件 Do While f <> ...
长沙市18020864762: 如何用VBA实现在多个sheet中进行模糊查询,并将包含关键字的一整行复制至指定位置? - ?
帅胜养心: Sub MySearch() Dim ws(6) As Worksheet Dim c1 As Range, c2 As Range Dim rSet ws(1) = Worksheets("Sheet1") ' 请自行修改为实际的工作表名Set ws(2) = Worksheets("Sheet2") ' 请自行修改为实际的工作表名Set ws(3) = Worksheets("...
长沙市18020864762: EXCEL用VBA语言实现粘贴多个sheet指定列的代码 - ?
帅胜养心: n = Sheets(m).[IV1].End(xlToLeft).Column应为 n=sheets(m).cells(rows.count,"i").end(3).row
长沙市18020864762: 小白求助vba代码怎么作用于多个表格? - ?
帅胜养心: 用类模块可以实现1、插入一个类模块,复制下面代码 Public WithEvents XL As Application Private Sub XL_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Not Application.Intersect(Target, [A2:c10000]) Is Nothing Then a = Target....
长沙市18020864762: Excel中怎么用vba将多个sheet的内容分别导入另一个sheet的指定列中 - ?
帅胜养心: sub a() for i=1 to sheets.count-1 '从第1个到倒数第2个工作表 sheets(i).range("A1:a2").copy sheets(sheets.count).[a65536].end(3).offset(1) next i end sub将每个工作表的A1:A2数据,复制到最后一个工作表的A列中.
长沙市18020864762: 怎么同时执行多个sheets中的VBA代码 - ?
帅胜养心: Call Sheet1.过程的名字 Call Sheet2.过程的名字 Call Sheet3.过程的名字 Call Sheet4.过程的名字例如 sub all() Call Sheet1.判断是否隐藏第9行 Call Sheet2.取消隐藏171至173行 End Sub
长沙市18020864762: excel中怎么用vba使多个sheet的内容首尾连接成一个sheet. - ?
帅胜养心: 下面是表2连接到表1下面的一个VBA.假定两个表都是5列 Dim i, num1, num2num1 = Sheets("sheet1").Cells(65536, 1).End(xlUp).Row '计算A列最后一行数据的位置num2 = Sheets("sheet2").Cells(65536, 1).End(xlUp).Row '计算A列最后一行数据的位置For i = 1 To num2For j = 1 To 5Sheets("sheet1").Cells(num1 + i, j) = Sheets("sheet2").Cells(i, j)Next jNext i
长沙市18020864762: 怎么用VBA实现把多个工作薄中的指定工作表复制到一个工作薄上面的多个工作表. - ?
帅胜养心: 材料:一个文件夹有多个工作薄(1,2,3,4,5,6,7,8,9,.....在这个文件夹下创建个excel然后复制黏贴代码 运行就可以了Sub test_3()Dim FSO,...