У Линды есть столбец, содержащий буквенные и цифровые символы. Ей нужно сохранить числовые символы и удалить буквенные. Например, ячейка может содержать 10003E111, а она хочет получить в итоге 10003111.

Есть несколько способов решить эту проблему. Однако, прежде чем приступить к какому-либо решению, вы должны убедиться, что не пытаетесь изменить что-то, что на самом деле не сломано. Например, вы захотите убедиться, что буква «E», которая появляется в числе, не является частью формата числа, другими словами, обозначением возведения в степень. Если это так, тогда вы действительно не хотите удалять символ, потому что это в конечном итоге изменит природу основного числа.

Если вы определили, что символы не являются частью формата числа, вы можете сначала попробовать использовать формулы для удаления буквенных символов. Если значения, которые вы хотите изменить, находятся в столбце A, вы можете ввести следующую (очень длинную) формулу в столбец B:

=MID(A1,MATCH(TRUE,ISERROR(1MID(A1,ROW(INDIRECT ("1:"&LEN(A1))),1)),0),-MATCH(TRUE,ISERROR(1MID (A1,ABS(ROW(INDIRECT("1:"&LEN(A1)))-LEN(A1)-1),1))

,0)+LEN(A1)+2-MATCH(TRUE,ISERROR(1*MID(A1,ROW (INDIRECT("1:"&LEN(A1))),1)),0))

Убедитесь, что вы ввели это как формулу массива, нажав Ctrl + Shift + Enter. Затем введите в столбец C следующее:

=SUBSTITUTE(A1,B1,"")

В результате столбец C содержит значения из столбца A без буквенных символов. Вы можете использовать Специальную вставку, чтобы скопировать информацию из столбца C в другой столбец, чтобы получить фактические значения вместо результатов формулы.

Этот подход может отлично сработать для краткосрочного использования в одной книге, но если вам нужно выполнять такого рода обработку данных чаще, вам нужно будет создать определяемую пользователем функцию для выполнения обработки. Вот пример:

Function OnlyNums(sWord As String)

Dim sChar As String     Dim x As Integer     Dim sTemp As String

sTemp = ""

For x = 1 To Len(sWord)

sChar = Mid(sWord, x, 1)

If Asc(sChar) >= 48 And _           Asc(sChar) <= 57 Then             sTemp = sTemp & sChar         End If     Next     OnlyNums = Val(sTemp)

End Function

Вы используете эту функцию, вызывая ее из ячейки рабочего листа:

=OnlyNums(A1)

Функция возвращает числовое значение. Если вы хотите создать еще более короткий макрос для обработки, примите во внимание следующее:

Function StripChar(aText As String)

Dim I As Integer

StripChar = ""

For I = 1 To Len(aText)

aChar = Mid(aText, I, 1)

Select Case aChar             Case "0" To "9"

StripChar = StripChar & aChar         End Select     Next End Function

Чтобы использовать эту функцию, используйте на листе одно из следующего:

=STRIPCHAR(A1)

=VALUE(STRIPCHAR(A1))

Первый возвращает текстовую строку, состоящую из цифр, второй возвращает числовую версию этой строки.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3840) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздние версии) здесь:

link: / excelribbon-Getting_Rid_of_Everything_Except_Numbers [Избавление от всего, кроме чисел].