是否可以通过条件格式或其他类似方法仅为单元格(或列)的数字和特殊字符着色?
我在 Excel 中创建了一本书来整理我的密码(或在将密码导出到密码管理器之前对密码进行排序)。然后,在“密码”列中,我希望 Excel 为数字和特殊字符添加颜色,以将它们与其余文本区分开来。
我在应用程序 Enpass 6(测试版)中看到了这一点,我很喜欢这种效果,我不知道你是否可以在 Excel 中实现类似的东西。
非常感谢您的任何建议或想法。
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 中的颜色,请参阅这张图表用于颜色选项和对应的数字。