粘贴在vba数据中

时间:2017-11-06 01:21:41

标签: excel excel-vba vba

image worksheet我正在设置包含酒店详细信息和专栏的表格#34; D"附近有医院,例如PMH,SCGH,FSH。我想要做的是搜索专栏" D"基于同一张纸上的单元格值。我有下面的代码但它只会做我想要的,如果列中的单元格" D"是单项,例如pmh。我需要能够搜索Column" D"中的所有单元格。对于任何文本实例。

非常感谢您的帮助

`Option Explicit
Sub finddata()
Dim hospitalname As String
Dim finalrow As Integer
Dim i As Integer

Sheets("Results").Range("A4:D100").ClearContents

Sheets("Main").Select
hospitalname = Sheets("Main").Range("g3").Value
finalrow = Sheets("Main").Range("A1000").End(xlUp).Row

For i = 2 To finalrow
    If Cells(i, 4) = hospitalname Then
    Range(Cells(i, 1), Cells(i, 4)).Copy
    Sheets("Results").Range("A4").End(xlUp).Offset(1, 0).PasteSpecial       xlPasteFormulasAndNumberFormats
    End If
Next i

Sheets("Main").Range("g3").Select

End Sub

`

1 个答案:

答案 0 :(得分:1)

最简单的两种方法是

  1. 使用Like运算符:

    If Cells(i, 4).Value Like "*" & hospitalname & "*" Then
    

    此方法的缺点是,例如PMH的医院名称可能与SPMH等其他医院名称匹配。

  2. 使用InStr功能:

    If Instr("," & Cells(i, 4).Value & ",", "," & hospitalname & ",") > 0 Then
    

    在这一行中,我在逗号中“包装”正在查看的单元格和正在搜索的值,因此它最终在字符串{{1]中搜索字符串(例如)",PMH," }}。 ",PMH,SCGH,FSH,"将返回匹配发生的字符位置,如果未找到匹配则返回零。因此,对InStr的测试是测试匹配是否发生。