【问题标题】:Excel VBA If Statement to Find Cells That Contain A StringExcel VBA If 语句查找包含字符串的单元格
【发布时间】:2017-04-01 20:34:11
【问题描述】:

我希望在 VBA 中创建一个 IF/Else 语句,运行时将根据单元格是否包含特定的文本字符串返回 True 或 False 值。所以基本上我希望如果单元格包含指定的字符串,则返回 True 值,如果不包含指定的字符串,则返回 False 值。这个公式需要运行一系列单元格,而不仅仅是一个单元格,如果这会产生影响的话。我想我需要使用 InStr 函数,但我不能 100% 确定这是否正确或如何实现它。我对 VBA 还很陌生,所以我能得到的任何帮助都将不胜感激,因为我已经坚持了几个小时。

谢谢

【问题讨论】:

  • 试试mBool = Range("A1").Value Like "*stringtofind*"
  • 您可以使用 InStr 但该函数返回找到您的字符串的字符的编号。所以你需要写if instr("bar","foobar") > 0 then found=true else found=false
  • 那么对于基于包含指定字符串的单元格重新调整布尔 True/False 值,什么函数是最好的呢?我希望能够在对应的单元格旁边显示所有这些 True/False 值,以显示哪些单元格包含指定的文本字符串。
  • 我认为这里有一个公式更好,请参阅:Cell contains specific text - =ISNUMBER(SEARCH(substring,text))

标签: vba excel


【解决方案1】:

这是一个非常糟糕的问题,但我认为每个人在人生的某个阶段都需要一些帮助。话虽如此,这是您要的代码

Sub FindString()
'Declare the range
Dim rng As Range
'Assign the range to find
Set rng = ActiveSheet.Range("A1:A100")
'Loop though each cell
For Each cell In rng.Cells
    'Check if cell has the string and set text 
    'of the next column to True or False
    cell.Offset(0, 1).Value = IIf(InStr(1, cell, "stringToFind"), "True", "False")
Next
End Sub

试一试,让我知道你的 cmets

【讨论】:

  • 我相信我让你的代码运行我现在遇到的唯一问题是试图弄清楚如何让 True/False 值出现在我正在搜索字符串的单元格旁边的列中in,而不是出现消息框。
  • 这基本上是一个模仿者。我改进了我的代码以使用三元运算符。
【解决方案2】:

为什么要使用 VBA?单元格中的表达式可以返回 True/False。

=ISNUMBER(FIND("something",A1))

我测试了@3vts 代码,它运行但输出错误。此版本有效:

Sub FindString()
Dim rng As Range
Set rng = ActiveSheet.Range("A1:A100")
For Each cell In rng.Cells
    If InStr(1, cell, "text to find") > 0 Then
        cell.Offset(0, 1).Value = True
    Else
        cell.Offset(0, 1).Value = False
    End If
Next
End Sub

我当然希望你学到了一些东西,尽管已经为你完成了工作。

【讨论】:

  • 这是一个家庭作业,我需要使用 VBA 来完成这个
  • @JoeObe25 如果是家庭作业,应该写。我们没有做你的课程 - 你是!
  • 好的,那么正如 Tom 的评论所示,单行将返回 True/False,不需要 If Then Else 结构。如果您有更多问题,请展示您的整个过程。正如 YowE3K 所说,我们不会为您做作业。你需要做出尝试。使用宏记录器帮助生成可以学习和修改的代码。
  • 我不想让任何人为我编写代码,这只是我尝试并发现的所有建议代码不包含 If/Else,这就是老师的骨架代码,所以我希望在正确的方向上得到定位
  • 然后将您创建的内容显示为自定义用户定义函数 (UDF)。 Gordan 在他的评论中给了你一个 If Then Else。
【解决方案3】:

下面的可能对你有帮助,它告诉你excel是否包含Word。

Dim ra As Range

Set ra = Cells.Find(What:=Word, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False)

If ra Is Nothing Then
    'False (Not Found)
Else
    'True (Found)
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2021-09-03
    相关资源
    最近更新 更多