Как раскрасить только цифры и специальные символы в ячейке Microsoft Excel

565
gabeweb

Можно ли раскрасить только числа и специальные символы ячейки (или столбца) условным форматированием или другим подобным способом?

Я создал книгу в Excel, чтобы упорядочить свои пароли (или привести их в порядок перед экспортом в менеджер паролей). Затем в столбце «пароли» я бы хотел, чтобы Excel раскрасил цифры и специальные символы, чтобы отличить их от остального текста.

Пример: Enpass 6

Я видел это в приложении Enpass 6 (бета), и мне понравился эффект, и я не знаю, сможете ли вы реализовать нечто подобное в Excel.

Пример: Microsoft Excel 2016

Большое спасибо за любую рекомендацию или идею.

Ps 1: Приложение скриншоты Enpass и эффект, который я хотел бы видеть в Excel, например, номера имеют один цвет, а специальные символы другого цвета.

PS 2: Я отмечаю, что я не настолько опытный программист, поэтому, если вы порекомендуете код на Visual Basic, пожалуйста, с вашими комментариями, чтобы попытаться понять.

PS 3: большое спасибо за вашу помощь, снова.

0
VBA - единственный способ сделать это. Scott Craner 5 лет назад 0

1 ответ на вопрос

0
jrichall

Добро пожаловать в 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. Выберите его и нажмите Run

И ваш текст должен быть окрашен в зависимости от типа символа!

Это изменит цвет символов в выбранных ячейках. Таким образом, вы можете выбрать целый столбец или отдельные ячейки.

Если вы когда-нибудь захотите возиться с кодом, просто нажмите Alt + F11, чтобы открыть редактор vba. Вам нужно будет дважды щелкнуть по модулю 1, чтобы открыть его.

Чтобы изменить цвета в VBA, обратитесь к этой таблице для вариантов цвета и соответствующих номеров.

Надеюсь, это поможет. Вы даже можете назначить этот макрос для кнопки или пользовательского сочетания клавиш .

Привет @jrichall. Большое спасибо за ваш подробный и дидактический ответ. На самом деле этот код работает очень хорошо, но теперь у меня есть другие сомнения: я вижу, что код работает, когда значения записываются непосредственно в ячейку, а не когда они получены в результате формулы (например, рассматриваемая ячейка является конкатенация содержимого других ячеек и тех, которые образуют пароль `CONCATENATE (B2; B3; B4)`. Какое значение должно быть изменено в коде в этом случае? Потому что я пробовал это, и он выдает ошибку 1004, указывая на строку `If ​​IsLetter (.Text) Тогда` gabeweb 5 лет назад 0

Похожие вопросы