我是VBA编程的新手,我需要一些帮助在Excel 2010中编写一个简单的宏。
我需要在A列中搜索文本字符串(我正在搜索的确切文本是not specified
),如果在单元格中找到该字符串,则将该单元格的整行剪切并粘贴到另一个工作表中在工作簿中,然后删除原始工作表中的空行。
我在论坛上搜索了一下,发现了一些代码示例几乎让我得到了我想去的地方但并不完全。
答案 0 :(得分:1)
行。我使用了录音机,并暗示你们都离开了我,并提出了这个宏。我没有使用增量器或循环它,而是过滤它并一次性完成所有操作。这个过程对我和现在办公室里的每个人都有用......现在每个人都认为我真的很擅长VBA ......事实并非如此,但我肯定会在路上:)
谢谢大家,求助!
Sub MoveNotSpec()
'主页上的“未指定”过滤器并剪切,将行粘贴到新工作表中并删除主工作表上的空行“
Selection.AutoFilter
ActiveSheet.Range("A1:A2000").AutoFilter Field:=1, Criteria1:= _
"=*specified*", Operator:=xlAnd
ActiveSheet.UsedRange.Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("OtherSheet").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("FirstSheet").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
ActiveSheet.Range("A1:A2000").AutoFilter Field:=1
End Sub
答案 1 :(得分:0)
如果您使用宏录制器,则可以录制您描述的整个过程,然后查看生成的代码。因为脚本不需要记住它找到“未指定”的地方,所以只需循环直到找不到字符串。另外,请记住为目标表保留行增量。
答案 2 :(得分:0)
也许尝试类似的东西:
Sub quickexample()
Call FilterData("not specified", xlFilterValues)
ActiveSheet.UsedRange.Copy
Worksheets.Add.Name = "NewSheet"
Worksheets("NewSheet").Paste
End Sub
Function FilterData(criteria, voperator)
[A1].AutoFilter Field:=1, _
Criteria1:=criteria, _
Operator:=voperator
结束功能
答案 3 :(得分:0)
可能尝试类似我在下面发布的内容。我只是通过录制宏来获得大量内容,就像其他用户建议的那样。如果你是VBA的新手,只需录制一个宏是大多数时间开始的最好的地方!
Dim intPasteRow As Integer
intPasteRow = 2
Sheets("FirstSheet").Select
Columns("A:A").Select
On Error Resume Next
Selection.Find(What:="not specified", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Err.Number = 91 Then
MsgBox "ERROR: 'not specified' could not be found."
End
End If
Dim intRow As Integer
intRow = ActiveCell.Row
Rows(intRow & ":" & intRow).Select
Selection.Cut
Sheets("OtherSheet").Select
Range("A" & intPasteRow).Select
ActiveSheet.Paste
Sheets("FirstSheet").Select
Rows(intRow & ":" & intRow).Select
Selection.Delete Shift:=xlUp