宏/函数,在一列中找到一个字符串,然后在工作表2中的一个句子中找到它,并在第3列中返回各自的值

卡尔提克

与Excel相关

输入

我在工作表1的B列中有日期,在工作表1的D列中有支票号码。在工作表2的D列中有一个句子。此句子的值将为工作表1的D列中的任何值。

要求:必须在工作表2的D列中搜索第一个支票号码(工作表d列),如果在任何句子中都找到该值,则必须将B列(工作表1中的日期)粘贴在H列中工作表2.在工作表1的H列中也标记“ Y”(如果找到),并在“ N”中发现。

戴夫斯Excel

首先,我们将变量变暗

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列1中放置一个“ Y”

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

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

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

然后循环到D列中的下一个“ a” sheet1

    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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档