在列中查找特定值,并将整行数据复制到新工作表中

时间:2017-06-01 01:19:14

标签: vba excel-vba excel

我正在研究一个项目的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

任何提示/帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

If InStr(" " & c.Text & " ", " " & strsearch & " ") Then

这将匹配整个单词。您可以将strsearch先验设置为循环外的strsearch = " " & A & " "(以加快速度)。

最后,我没有看到这句话的重点:

strsearch = Cells.Find(A, LookIn:=xlValues, Lookat:=xlWhole)

它看起来相当于直接分配strsearch = A