我想编写一个宏来搜索数据库中的列,并在不同的选项卡中返回包含特定给定关键字的所有单元格。换句话说,我想输入“锤子”并获得包含单词hammer的每个单元格的列表,即使单词位于值的中间(例如,“建筑商昨天买了一把锤子”)。
我对VBA还不熟悉所以我想要一些帮助/输入来使用哪些函数来执行此操作。我试过使用AdvancedFilter,但是只查看每个单元格值的开头。欢迎所有反馈,谢谢!
答案 0 :(得分:0)
使用Range
对象
Sub main()
With Worksheets("hammer") '<--| reference searched worksheet (change "hammer" to its actual name)
With .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)) '<--| reference its column "A" cells from row 1 down to last non empty one (change "A"s to your actual searched column index)
.AutoFilter Field:=1, Criteria1:="*hammer*" '<--| filter on referenced column to get cell containing "hammer"
If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("different tab").Range("A1") '<--| copy any filtered cell into "different tab" worksheet
End With
.AutoFilterMode = False '<--| show all rows back
End With
End Sub
它假设搜索范围的第一个单元格(本例中为“A1”)是标题单元格,因此不会搜索“* hammer”。