如何仅为 Microsoft Excel 单元格中的数字和特殊字符着色

如何仅为 Microsoft Excel 单元格中的数字和特殊字符着色

是否可以通过条件格式或其他类似方法仅为单元格(或列)的数字和特殊字符着色?

我在 Excel 中创建了一本书来整理我的密码(或在将密码导出到密码管理器之前对密码进行排序)。然后,在“密码”列中,我希望 Excel 为数字和特殊字符添加颜色,以将它们与其余文本区分开来。

例如:Enpass 6

我在应用程序 Enpass 6(测试版)中看到了这一点,我很喜欢这种效果,我不知道你是否可以在 Excel 中实现类似的东西。

例如:Microsoft Excel 2016

非常感谢您的任何建议或想法。

Ps 1:附件是Enpass的截图和我想在Excel中看到的效果,比如数字有一种颜色,特殊字符有另一种颜色。

Ps 2:我注意到我对编程不是很熟悉,因此如果您推荐了 Visual Basic 代码,请附上您的评论以尝试理解。

Ps 3:再次感谢您的帮助。

答案1

欢迎来到 SuperUser。VBA 并不像乍看起来那么可怕,这是一个开始了解一些功能的很棒的项目。

首先,你应该在 Excel 中启用“开发人员”选项卡

1 - 单击“文件”选项卡。

2 – 单击选项。

3 – 单击自定义功能区。

4- 在自定义功能区和主选项卡下,选中开发人员复选框。

接下来,按 Alt+F11 打开 VBA 编辑器,然后从此处的下拉菜单中选择“新模块”进行创建:

在此处输入图片描述

将以下代码粘贴到新打开的窗口中。(看起来很多,但一旦开始使用它就不会太多)

    'The following Function helps Excel identify if a character is a letter or not
Function IsLetter(strValue As String) As Boolean
    Dim intPos As Integer
    For intPos = 1 To Len(strValue)
        Select Case Asc(Mid(strValue, intPos, 1))
            Case 65 To 90, 97 To 122
                IsLetter = True
            Case Else
                IsLetter = False
                Exit For
        End Select
    Next
End Function
'The following function helps Excel identify if a character is a special character, like #, @, and !
Function IsSpecial(strValue As String) As Boolean
    Dim intPos As Integer
    For intPos = 1 To Len(strValue)
        Select Case Asc(Mid(strValue, intPos, 1))
            Case 33 To 47, 58 To 64, 91 To 96, 123 To 126
                IsSpecial = True
            Case Else
                IsSpecial = False
                Exit For
        End Select
    Next
End Function
'This is the Macro that will change the colors of characters in your selected range
Public Sub ColorText()
'the next 3 lines set abbreviations as certain kinds of things. Long is a number or integer, Ranges are cell selections
Dim lng As Long
Dim rng As Range
Dim cl As Range
'The next line sets the range of cells to change colors in to whatever cells you have selected on the sheet
    Set rng = Selection
'This section loops through each cell in your selection and checks each character in the cell.
    For Each cl In rng.Cells
    For lng = 1 To Len(cl.Value)
        With cl.Characters(lng, 1)
'First the code checks for letters and keeps them black
        If IsLetter(.Text) Then
            .Font.ColorIndex = 1 'change this number to change the color
        
'Next it checks for Special Characters and colors them Blue
        ElseIf IsSpecial(.Text) Then
            .Font.ColorIndex = 41
        
'If a character is not a letter or a special, it must be a number, so it colors numbers red
        Else
            .Font.ColorIndex = 3
        
        End If
        End With
    Next lng    'this moves the code to the next character
  Next cl       'once all the characters are checked, this moves the code to the next cell
End Sub         'once all the selected cells have been run through, this ends the code

你的模块应该看起来现在像这样

现在您可以开始更改颜色了。首先,选择所有要更改颜色的单元格。

在此处输入图片描述

接下来,打开“开发人员”选项卡(1),然后单击“宏”按钮(2):

在此处输入图片描述

您应该会看到 ColorText 宏。选择它并单击运行

在此处输入图片描述

并且您的文本应该根据字符类型进行着色!

在此处输入图片描述

这将改变所选单元格中字符的颜色。因此,您可以选择整列或单个单元格。

在此处输入图片描述

如果您想修改代码,只需按 Alt+F11 打开 vba 编辑器。您需要双击模块 1 来打开它。

要更改 VBA 中的颜色,请参阅这张图表用于颜色选项和对应的数字。

希望对您有所帮助。您甚至可以将此宏分配给按钮或者自定义键盘快捷键

相关内容