首页 > 解决方案 > 如果单元格包含某些东西,那么

问题描述

我正在编写一个基本宏,如果另一个单元格中有某个单词,它将帮助用一个值填充单元格。这是我的代码:

Sub SSS()
    For i = 2 To lastrow
        If Cells(i, 4).Text = ("x") Then Cells(i, 2) = "a"
    Next i
End Sub

但是单元格 d2 也包含其他单词,因此如果单元格 d2 中有“x a”,则单元格 b2 中不会返回任何值。我怎样才能解决这个问题?

标签: vbaexcel

解决方案


您可以将正则表达式与模式中包含的单词边界一起使用。假设它确实是您正在寻找的词。

代码:

Option Explicit
Public Sub SSS()
    Dim lastRow As Long, i As Long
    Const WORD As String = "Hello" '<== Word you are looking for
    lastRow = 6

    With ThisWorkbook.Worksheets("Sheet1")
        For i = 2 To lastRow
            If Found((.Cells(i, 4).Value2), "\b(" + WORD + ")\b", False) Then .Cells(i, 2) = "a"
        Next i
    End With
End Sub
Public Function Found(ByVal t As String, ByVal inputPattern As String, Optional ignoreCaseOption = True) As Boolean
    Dim reg As Object
    Set reg = CreateObject("VBScript.RegExp")
    With reg
        .Global = True
        .MultiLine = True
        .ignoreCase = ignoreCaseOption
        .pattern = inputPattern
        If .test(t) Then Found = True
    End With
End Function

带输出的示例数据:

数据和输出

正则表达式信息:

正则表达式


推荐阅读