【问题标题】:Excel VBA - if/then statement - Identifying cells with a dashExcel VBA - if/then 语句 - 用破折号识别单元格
【发布时间】:2018-08-08 23:15:18
【问题描述】:

我正在尝试编写 VBA 行,如果单元格 A1 在单元格中的任何位置包含破折号,则 B1 将显示“蓝色”。如果没有破折号,那么 B1 会说“红色”。

我编写了以下代码,但它不起作用,我不确定我是否正确地执行“like”部分:

ActiveCell.FormulaR1C1 = _
    "=IF(RC[-1]=" - ",""Blue"",""Red"")"

感谢您提供的任何帮助!我进行了很多搜索,但找不到任何不包含特定数字或文本的示例。

【问题讨论】:

  • 要创建一个可以执行此操作的 Excel 公式,建议您使用 FIND 函数。在 VBA 中,您可以使用 LikeInStr

标签: vba excel


【解决方案1】:

你也可以使用

ActiveCell.FormulaR1C1 = "=IF(ISNUMBER(FIND(""-"",RC[-1])),""Blue"",""Red"")"

【讨论】:

    【解决方案2】:

    或单线:

    ActiveCell.FormulaR1C1 = "=IF(ISERROR(FIND(""-"",RC[-1])),""Red"",""Blue"")"
    

    【讨论】:

      【解决方案3】:

      您可以使用这样的简单 VBA 脚本来完成:

      Sub Test()
      Dim sh1 As Worksheet
      Set sh1 = Sheets("Sheet1")
      
              Application.ScreenUpdating = False
      
                      For x = 1 To sh1.Cells(rows.Count, "A").End(xlUp).Row
      
                          If InStr(1, sh1.Range("A" & x).Value, UCase("-"), 1) > 0 Then sh1.Range("B" & x).Value= "Red"
                          If InStr(1, sh1.Range("A" & x).Value, UCase("-"), 1) < 0 Then sh1.Range("B" & x).Value = "Blue"
      
                      Next x
      
              Application.ScreenUpdating = True
      
      End Sub
      

      【讨论】:

        【解决方案4】:

        我不认为在每个“B”列单元格中放置一个公式是一个好习惯,Excel 可能需要很长时间来计算。

        试试这个:

        Sub Example()
        
            mySheet.Cells(1, "B").Value = IIf(Not InStr(1, mySheet.Cells(1, "A"), Chr(45), vbTextCompare) = 0, "Blue", "Red")
        
        End Sub
        

        您可以使用此代码循环遍历要设置该条件的每个单元格。

        功能:

        IIf 等于 Excel 工作表函数“IF”。

        InStr 在另一个字符串中搜索一个字符串,你可以传递一个唯一的字符作为条件。我使用 chr(45) 因为它根据传递的代码返回一个 char,45 引用 Dash 代码。

        【讨论】:

          【解决方案5】:

          在其他几个答案中更正(但未指出)的错误在于从

          更改您的公式

          " - "

          "" - ""

          即从 - 周围的单双引号变为双双引号。单引号正在结束您的字符串 - 您甚至可以看到 - 在您的问题中以黑色文本而不是红色文本显示,因此,它不是插入到 ActiveCell.FormulaR1C1 的字符串的一部分。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多