我正在研究一个项目的vba代码,我在这个项目中有数据输入表中的数据(对于Slope Inclinometers)。"然后,我要求用户插入一个值(深度),以便在该指定值下完成计算。当用户插入深度值时,我希望vba代码找到"数据导入表"的列A中的所有单元格。包含该值并将相应的行复制到下一个工作表"计算。"例如,如果用户输入深度为3.5,我希望代码查找A列中包含3.5的所有单元格,并将该行中的数据复制到"计算"工作表。
目前我的代码执行以下操作: 如果用户输入3.5,则值3.5,13.5,23.5,35.5等的数据都出现在"计算"工作表。或者,如果用户输入2,则显示值2,2.5,12,12.5,20等的数据。我只希望数据对应于用户输入的确切数字!这是我的代码:
Sub FindMe()
Dim A As String
Dim i As Integer
Dim j As Integer
Dim strsearch As String
Dim lastline As Integer
Dim lastrow As Integer
A = Worksheets("Data Importation Sheet").Cells(15, "W").Value
Worksheets("Hidden").Cells(1, "C") = A
Worksheets("Calculations").Activate
lastrow = Worksheets("Calculations").Range("A" & Rows.count).End(xlUp).Offset(1).row
j = lastrow
Worksheets("Data Importation Sheet").Activate
lastline = Range("A65536").End(xlUp).row
strsearch = Cells.Find(A, LookIn:=xlValues, Lookat:=xlWhole)
For i = 1 To lastline
For Each c In Range("A" & i)
If InStr(c, strsearch) Then
tocopy = 1
End If
Next c
If tocopy = 1 Then
Rows(i).Copy Destination:=Sheets("Calculations").Rows(j)
j = j + 1
End If
tocopy = 0
Next i
End Sub
任何提示/帮助将不胜感激!
答案 0 :(得分:0)
你可以试试这个:
If InStr(" " & c.Text & " ", " " & strsearch & " ") Then
这将匹配整个单词。您可以将strsearch
先验设置为循环外的strsearch = " " & A & " "
(以加快速度)。
最后,我没有看到这句话的重点:
strsearch = Cells.Find(A, LookIn:=xlValues, Lookat:=xlWhole)
它看起来相当于直接分配strsearch = A
。