Избавление от буквенных символов (Microsoft Excel)
У Брайана есть рабочий лист, в котором много ячеек с буквенными символами. Он ищет способ избавиться только от этих буквенных символов, независимо от того, где они появляются в ячейке. Например, если ячейка содержит «ABC123», Брайан хочет избавиться от «ABC»
и осталось только «123». Точно так же «A3B2C1» должно стать «321»
и «# 45P%» должно стать «# 45%».
Единственный способ решить эту проблему — использовать макросы. Если вы хотите просто вырезать символы на месте, вы можете сделать это, выбрав ячейки, на которые вы хотите повлиять, и затем запустив макрос, который проверяет каждую ячейку и удаляет неправильные символы. Есть много способов сделать это; следующий макрос представляет собой простой подход.
Sub CleanText1() Dim rngCell As Range Dim intChar As Integer Dim strCheckString As String Dim strCheckChar As String Dim intCheckChar As Integer Dim strClean As String For Each rngCell In Selection strCheckString = rngCell.Value strClean = "" For intChar = 1 To Len(strCheckString) strCheckChar = Mid(strCheckString, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar rngCell.Value = strClean Next rngCell End Sub
Хорошая вещь в этом подходе к удалению символов заключается в том, что вы можете легко избавиться от других символов, просто изменив то, что проверяется (и какие действия предпринимаются) в структуре Select Case.
Если вы не хотите изменять исходные ячейки, хорошим подходом будет создание пользовательской функции, которая будет возвращать «чистую» версию строки. Этого можно достичь, внеся несколько изменений в предыдущий макрос.
Function CleanText2(ByVal sRaw As String) As String Dim intChar As Integer Dim strCheckString As String Dim strCheckChar As String Dim intCheckChar As Integer Dim strClean As String Application.Volatile strClean = "" For intChar = 1 To Len(sRaw) strCheckChar = Mid(sRaw, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar CleanText2 = strClean End Function
Чтобы использовать эту функцию, вы можете поместить в ячейку следующую формулу:
=CleanText2(A1)
В результате формула возвращает «чистую» версию того, что находится в ячейке A1, не нарушая содержимого ячейки A1.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3219) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:
link: / excelribbon-Getting_Rid_of_Alphabetic_Characters [Избавление от буквенных символов]
.