Избавиться от всего, кроме чисел

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

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

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

= MID (A1, MATCH (TRUE, ISERROR (1 * MID ( A1, ROW (INDIRECT («1:» & LEN (A1))), 1)), 0), — MATCH (TRUE, ISERROR (1 * MID (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)

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

= OnlyNums (A1)

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

Функция StripChar (aText As String) Dim I As Integer StripChar = «» For I = 1 To Len (aText ) aChar = Mid (aText, I, 1) Выбрать регистр aChar Case от «0» до «9» StripChar = StripChar & aChar End Выбрать функцию NextEnd

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

= STRIPCHAR (A1) = VALUE (STRIPCHAR (A1))

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

Источник: frestage.ru

Бытовой вопрос