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

标签: vba split delimiter


【解决方案1】:

考虑使用字符串函数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|numbernumber|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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2014-08-02
    • 2020-10-28
    相关资源
    最近更新 更多