我试图写一条VBA行,如果单元格A1在单元格中的任何地方都包含破折号,则B1会说“蓝色”。如果没有破折号,那么B1会说“红色”。
我编写了以下代码,但无法正常工作,并且不确定是否正确执行了“ like”部分:
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]=" - ",""Blue"",""Red"")"
感谢您提供的任何帮助!我已经做了很多搜索,但是找不到任何不包含特定数字或文字的示例。
答案 0 :(得分:1)
您也可以使用
ActiveCell.FormulaR1C1 = "=IF(ISNUMBER(FIND(""-"",RC[-1])),""Blue"",""Red"")"
答案 1 :(得分:0)
您可以使用以下简单的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
答案 2 :(得分:0)
或单线:
ActiveCell.FormulaR1C1 = "=IF(ISERROR(FIND(""-"",RC[-1])),""Red"",""Blue"")"
答案 3 :(得分:0)
我不认为将公式放在每个“ 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 在另一个字符串中搜索一个字符串,您可以将唯一的char作为criterea传递。我使用了chr( 45 ),因为它根据传递的代码返回一个char,其中45个引用了 Dash 代码。
答案 4 :(得分:0)
在其他几个答案中已纠正(但未指出)的错误在于将公式从
更改 " - "
到
"" - ""
即从-
周围的单双引号变为双双引号。单引号结束了您的字符串-您甚至可以看到问题中的-
出现在黑色文本中,而不是红色文本,因此,它不是插入到ActiveCell.FormulaR1C1
中的字符串的一部分。 / p>