我每周运行一个excel报告,需要替换某个列中的所有值,具体取决于不同值中存在哪些字符串。
我已经学到了很多关于如何从堆栈溢出循环列,以及instr函数,但我的宏仍然无法正常工作。此外,我发现的许多解决方案都需要实际的字符串进行搜索,但由于每次都会更改,我需要搜索范围。希望有人可以帮我找出原因......提前谢谢你!
Sub FlagReplace()
Dim flagcell As String
rowcount = WorksheetFunction.Count(Range("H:H"))
For i = 2 To rowcount
flagcell = Cells(i, 8).Value
If InStrB(1, flagcell, "flag_green", vbBinaryCompare) <> 0 Then
Cells(i, 8).Value = "last month"
ElseIf InStrB(1, flagcell, "red", vbBinaryCompare) <> 0 Then
Cells(i, 8).Value = "not last month"
End If
Next
End Sub
答案 0 :(得分:0)
我相信您需要选项比较文本来告诉InStr函数比较部分字符串。在您的模块之前,您可以插入它。它允许您比较部分字符串。
几周前我实际上写了一段非常相似的代码。我将代码复制到其中,我使用的是InStr而不是InStrB。如果有效,请告诉我。
Option Compare Text
Sub FlagReplace()
Dim flagcell As String
rowcount = WorksheetFunction.Count(Range("H:H"))
For i = 2 To rowcount
flagcell = Cells(i, 8).Value
If InStr(1, flagcell, "flag_green") <> 0 Then
Cells(i, 8).Value = "last month"
ElseIf InStr(1, flagcell, "red") <> 0 Then
Cells(i, 8).Value = "not last month"
End If
Next
End Sub