我有一个excel文件,其中某一列的每一行都有用"|“分隔的数据(包括日期和整数)。使用VBA时,如果单元格包含的值大于3,000,000,我希望突出显示该单元格。
下面是我的代码。sh2lrow是我当前工作表(工作表2)的最后一行。ioSched是我正在使用的专栏。你能帮我找到一个更好的解决方案吗?我拆分单元格,如果是整数,则将字符串转换为整数,如果大于3,000,000,则用红色突出显示。
For i = 2 To sh2lRow
splitBudget = Split((sh2.Cells(i, ioSched)), "|")
For Each Item In splitBudget
If IsNumeric(Item) Then
finalNumber = CInt(Item)
Else: finalNumber = 0
End If
If finalNumber > 3000000 Then sh2.Cells(i, ioSched).Interior.ColorIndex = 3
Next
Next i

发布于 2016-09-20 01:11:58
考虑使用字符串函数Mid()和Instr()来解析数字以进行格式化。下面假设列的模式为date|number
For i = 2 To sh2lRow
finalnumber = CLng(Mid(Worksheets(1).Cells(i, ioSched), _
InStr(Worksheets(1).Cells(i, 1), "|") + 1))
If finalnumber > 3000000 Then Worksheets(1).Cells(i, ioSched).Interior.ColorIndex = 3如果列的模式是date|number和number|date (在管道前后没有空格),则使用条件检查添加Left()字符串函数:
For i = 2 To sh2lRow
cellValue = Worksheets(1).Cells(i, ioSched)
If IsNumeric(Left(cellValue, InStr(cellValue, "|") - 1)) Then
finalnumber = CLng(Left(cellValue, InStr(cellValue, "|") - 1))
Else
finalnumber = CLng(Mid(cellValue, InStr(cellValue, "|") + 1))
End If
If finalnumber > 3000000 Then Worksheets(1).Cells(i, 1).Interior.ColorIndex = 3
Next ihttps://stackoverflow.com/questions/39578243
复制相似问题