首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分分隔的单元格并突出显示单元格是否包含特定值

拆分分隔的单元格并突出显示单元格是否包含特定值
EN

Stack Overflow用户
提问于 2016-09-20 00:50:52
回答 1查看 59关注 0票数 0

我有一个excel文件,其中某一列的每一行都有用"|“分隔的数据(包括日期和整数)。使用VBA时,如果单元格包含的值大于3,000,000,我希望突出显示该单元格。

下面是我的代码。sh2lrow是我当前工作表(工作表2)的最后一行。ioSched是我正在使用的专栏。你能帮我找到一个更好的解决方案吗?我拆分单元格,如果是整数,则将字符串转换为整数,如果大于3,000,000,则用红色突出显示。

代码语言:javascript
复制
    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

EN

回答 1

Stack Overflow用户

发布于 2016-09-20 01:11:58

考虑使用字符串函数Mid()Instr()来解析数字以进行格式化。下面假设列的模式为date|number

代码语言:javascript
复制
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()字符串函数:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39578243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档