【发布时间】:2016-09-19 16:50:52
【问题描述】:
我有一个 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
【问题讨论】:
-
哪个先出现:
date | number或number | date?数字是否带有千位分隔符? -
您的程序中是否恰好有
On Error Resume Next?如果值高于 32,767,CInt(Item)将溢出。您需要 finalNumber 成为Long- 请改用CLng(Item)。 -
是日期 |日期 |数字,有时重复(即日期 | 日期 | 数字 | 日期 | 日期 | 数字)。没有千位分隔符。我在“这里的excel文件的图像”中放了一个例子。我也被卡住了,因为我想突出显示单元格中的任何数字是否大于 3000000。
-
样本数据的第一行不仅会溢出
Integer,还会溢出Long。您期望在那里看到的最高值是多少? -
感谢大家的帮助!上面的代码可以工作,但是像 Comintern 建议的那样 CLng(Item)。