我检查了一堆不同的帖子,似乎无法找到我正在寻找的确切代码。此外,我从来没有使用过VBA,所以我试图从其他帖子的代码,并输入我的信息,它的工作。没有运气。在工作中,我们有一个工资系统Excel。我试图搜索我的名字"Clarke, Matthew"
,然后复制该行并将其粘贴到我保存在我的桌面"Total hours"
上的工作簿中。如何在excel中使用特定单词复制一行并粘贴到另一个excel表单中?
回答
在他的评论中展开timrau的说法,您可以使用AutoFilter函数来查找包含您名字的行。 (请注意,我假设你有源工作簿打开)
Dim curBook As Workbook
Dim targetBook As Workbook
Dim curSheet As Worksheet
Dim targetSheet As Worksheet
Dim lastRow As Integer
Set curBook = ActiveWorkbook
Set curSheet = curBook.Worksheets("yourSheetName")
'change the Field number to the correct column
curSheet.Cells.AutoFilter Field:=1, Criteria1:="Clarke, Matthew"
'The Offset is to remove the header row from the copy
curSheet.AutoFilter.Range.Offset(1).Copy
curSheet.ShowAllData
Set targetBook = Application.Workbooks.Open "PathTo Total Hours"
Set targetSheet = targetBook.WorkSheet("DestinationSheet")
lastRow = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
targetSheet.Cells(lastRow + 1, 1).PasteSpecial
targetBook.Save
targetBook.Close
正如你可以看到我把占位符为您的工作簿的具体设置。
'ActiveSheet.AutoFilter.Range.Offset(1).Copy'这是一个不正确的方法:)请参阅我在评论中发布的两个链接。 – 2012-07-24 14:17:43
@Siddharth我发现'AutoFilter.Range'工作正常。 'SpecialCells(xlCellTypeVisible)'也应该可以工作,但是我也遇到了返回空白单元格的问题。 – 2012-07-24 14:27:12
久经考验
Sub Sample()
Dim wb1 As Workbook, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim copyFrom As Range
Dim lRow As Long '<~~ Not Integer. Might give you error in higher versions of excel
Dim strSearch As String
Set wb1 = ThisWorkbook
Set ws1 = wb1.Worksheets("yourSheetName")
strSearch = "Clarke, Matthew"
With ws1
'~~> Remove any filters
.AutoFilterMode = False
'~~> I am assuming that the names are in Col A
'~~> if not then change A below to whatever column letter
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
With .Range("A1:A" & lRow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
End With
'~~> Remove any filters
.AutoFilterMode = False
End With
'~~> Destination File
Set wb2 = Application.Workbooks.Open("C:\Sample.xlsx")
Set ws2 = wb2.Worksheets("Sheet1")
With ws2
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lRow = 1
End If
copyFrom.Copy .Rows(lRow)
End With
wb2.Save
wb2.Close
End Sub
快照
+1这里很多边缘案例我没有进入 – 2012-07-24 15:19:33
TY所有的反馈。我尝试使用第二个宏,但现在在此行收到错误消息。AutoFilter字段:= 1,Criteria1:=“= *”&strSearch&“*”....告诉我'运行时错误1004:自动筛选范围失败的方法“。有什么建议么? – user1548751 2012-07-27 13:36:09
你在这里设置了什么? '.Range(“A1:A”&lRow) '? – 2012-07-27 13:37:20
我知道这是旧的,但对于其他人寻找如何做到这一点,就可以在做更直接的方式:
Public Sub ExportRow()
Dim v
Const KEY = "Clarke, Matthew"
Const WS = "Sheet1"
Const OUTPUT = "c:\totalhours.xlsx"
Const OUTPUT_WS = "Sheet1"
v = ThisWorkbook.Sheets(WS).Evaluate("index(a:xfd,match(""" & KEY & """,a:a,),)")
With Workbooks.Open(OUTPUT).Sheets(OUTPUT_WS)
.[1:1].Offset(.[counta(a:a)]) = v
.Parent.Save: .Parent.Close
End With
End Sub
- 1. 在Excel中复制多行并粘贴到另一个表格
- 2. 复制一个工作表并粘贴到另一备用行中(Excel的VBA)
- 3. 复制并粘贴到另一张表中的新列Excel VBA
- 4. Excel VBA复制并粘贴到另一张表中的下一个空白行
- 5. 复制列中的特定单元格并粘贴到另一个工作表
- 6. 遍历行复制并粘贴到VBA另一个工作表中的Excel
- 7. 如何复制和粘贴excel word到单词vba
- 8. 复制/粘贴工作表中的特定列到另一个
- 9. 复制并粘贴一个单元格从一个列表到另一个表
- 10. 根据列名包含空白单元格将一个excel的数据复制并粘贴到另一个excel
- 11. 如何在php laravel excel中将表单复制到另一个表单中?
- 12. 复制并粘贴Excel宏
- 13. 如何在Excel中复制行并将值从一个单元格复制到另一个单元格?
- 14. Excel VBA在列中反复地复制并粘贴一系列单元格
- 15. Excel Vba复制重复值并将其粘贴另一张
- 16. Excel中复制和粘贴
- 17. excel将具有特定单词的行复制到同一顺序的另一个工作表中
- 18. 使用C#在Excel中复制/粘贴单元格
- 19. Javascript - 从剪贴板粘贴到Excel中的特定单元格
- 20. VBA - 从多个Excel文件复制并粘贴到单个Excel文件
- 21. Excel VBA:从另一个工作簿复制行并粘贴到主工作簿
- 22. Excel VBA查询查找特定单词,插入一行,并粘贴到所述行中
- 23. 将特定单元格从EXCEL复制并粘贴到特定SPSS单元格中
- 24. 复制并粘贴Excel工作表
- 25. 如果将公式复制并粘贴到单独的Excel表中
- 26. 在Excel中复制粘贴表单选项按钮
- 27. VBA复制Excel序列中的多行并粘贴到不同的Excel表格
- 28. 复制行并粘贴到另一个工作表的末尾
- 29. 使用Excel VBA复制粘贴行很简单吗?
- 30. 使用Vim复制行并粘贴到另一行之后?
如果您在单个列上搜索关键字(例如,所有“Clarke,Matthew”都在列A上),那么Excel的过滤器功能应该可以工作。 – timrau 2012-07-24 13:02:36
也许发布你所拥有的东西会给我们一个更好的开始帮助的地方。你也可以看看VLOOKUP函数。 – 2012-07-24 13:16:04
看到这个http://stackoverflow.com/questions/10319096/error-when-i-use-specialcells-of-autofilter-to-get-visible-cells-in-vba/10319230#10319230修改它以满足您的需求:) – 2012-07-24 13:34:43