У Линды есть столбец, содержащий буквенные и цифровые символы. Ей нужно сохранить числовые символы и удалить буквенные. Например, ячейка может содержать 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))
Первый возвращает текстовую строку, состоящую из цифр, второй возвращает числовая версия этой строки.
Источник: