我有一个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
答案 0 :(得分:0)
考虑使用字符串函数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 i