宏/函数在列中查找字符串并在表2的句子中找到它并返回第3列中的相应值

时间:2015-10-12 13:14:54

标签: excel vba excel-vba

与Excel相关

输入

我在B栏中有日期,并在表1的D栏中检查号码。 我在表2的D栏中有一个句子,这个句子将具有表1中D列的任何值。

要求: 必须在表2中的列D中搜索第一个校验码(列d表1),如果在任何句子中找到该值,则必须将表B(表1中的日期)粘贴在表2中的表H中。如果找到则在表1列H“Y”中标记,如果未找到则标记为“N”。

1 个答案:

答案 0 :(得分:0)

首先我们将调暗变量

Dim Rws As Long, Rng As Range, a As Range
Dim Rws2 As Long, rng2 As Range, c As Range
Dim sh As Worksheet, ws As Worksheet

我们需要在设置范围

之前设置工作表
Set sh = Sheets("Sheet1")
Set ws = Sheets("Sheet2")

设置sheet1的范围,这将确定columnD中的最后一行并设置范围

With sh
    Rws = .Cells(.Rows.Count, "D").End(xlUp).Row
    Set Rng = .Range(.Cells(2, "D"), .Cells(Rws, "D"))
End With

这将设置sheet2的范围

With ws
    Rws2 = .Cells(.Rows.Count, "D").End(xlUp).Row
    Set rng2 = .Range(.Cells(2, "D"), .Cells(Rws2, "D"))
End With

现在我们将开始循环查找#的支票

For Each a In Rng.Cells

想要找到第一个支票号码

  Set c = rng2.Find(what:=a, lookat:=xlPart)

如果找到,那么我们要将日期放在H列中

        If Not c Is Nothing Then
        Cells(c.Row, "H") = a.Offset(0, -2)

在“H sheet1”栏中加上“Y”

 sh.Cells(a.Row, "H") = "Y"

如果没有找到,那么我们想在H sheet1列中放置一个“N”

 Else: sh.Cells(a.Row, "H") = "N"
end if

然后循环到D栏1中的下一个“a”

    Next a

所有这些都将是这样的。

Sub Loop2()
    Dim Rws As Long, Rng As Range, a As Range
    Dim Rws2 As Long, rng2 As Range, c As Range
    Dim sh As Worksheet, ws As Worksheet

    Set sh = Sheets("Sheet1")
    Set ws = Sheets("Sheet2")

    With sh
        Rws = .Cells(.Rows.Count, "D").End(xlUp).Row
        Set Rng = .Range(.Cells(2, "D"), .Cells(Rws, "D"))
    End With

    With ws
        Rws2 = .Cells(.Rows.Count, "D").End(xlUp).Row
        Set rng2 = .Range(.Cells(2, "D"), .Cells(Rws2, "D"))
    End With

    For Each a In Rng.Cells
        Set c = rng2.Find(what:=a, lookat:=xlPart)
        If Not c Is Nothing Then
            Cells(c.Row, "H") = a.Offset(0, -2)
            sh.Cells(a.Row, "H") = "Y"
        Else: sh.Cells(a.Row, "H") = "N"
        End If

    Next a

End Sub