我是 Excel VBA 的新手,这是我第一次尝试制作一个有用的宏来加快我的工作进程。
我正在尝试做的事情
我有一个大约 15,000 行 x 大约 15 列的数据文件。我希望我的宏做的是,一旦我在单独的工作表上点击了一个按钮,代码将获取我在该工作表上的特定单元格中键入的字符串,转到包含所有数据的工作表,然后使用 find在其中一列上运行以查找我定义的字符串的所有实例。
一旦找到了字符串的所有实例,我想复制相应的行并将它们粘贴到我运行宏的工作表中。
澄清一下,我想在其中找到字符串的列包含人们输入的描述——不只是一个词要看;这就是为什么我一直在尝试使用 Find 功能。
到目前为止我的尝试:
Sub FindTextBasicData()
'Define variables
Dim sourceSht As Worksheet
Dim outputSht As Worksheet
Dim strSearch As String
Dim searchRange As Range
Dim outputRange As Range
'Set the sheet variables to those present in the workbook
Set sourceSht = Sheets("Basic Data")
Set outputSht = Sheets("Output")
'Set the value of the string variable to the contents of cell C2 in the output sheet
strSearch = outputSht.Range("C2")
'Set the range variable to the range in the data sheet that I want to check
Set searchRange = sourceSht.Range("C6:C15448")
'Use the Find function to look through the range I defined and select all rows where the
'string variable can be found, setting the second range variable to these values
Set outputRange =searchRange.Find(What:=strSearch, After:=.Cells(3, 6), LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).EntireRow
'Copy the results of the Find function to the clipboard
outputRange.Copy
'Select the 5th row of the output sheet as the location to paste the data, and then paste
outputSht.Select
Rows(5).Select
ActiveSheet.Paste
End Sub
我知道我肯定在 find 函数上做错了,但我无法解决这个问题 - 我认为我的问题在于 After 参数,因为它没有按照我的想法执行(参考单元格 C6作为开始使用 Find from 的地方?)。我尝试查看 Ozgrid 上的 Find 功能指南,但我想我只是让自己更加困惑。
如果我能让这个宏正常工作,我将能够大量使用它来大大简化我必须为这 15000 条记录执行的数据分析。对此的任何帮助将不胜感激,如果我解释得不够好,我当然很乐意澄清。