Функция в excel взять только

Наблюдения и советы этой статьи мы подготовили на основании опыта команды ВОЗЬМИТЕ функцию возвращает указанное количество непрерывных строк или столбцов от начала или конца заданного массива.

Внимание: эта функция доступна только в Excel для Microsoft 365 на канале Insider.

Синтаксис

=TAKE(array, rows, [columns])

аргументы

массив (обязательно): массив, из которого вы хотите взять непрерывные строки или столбцы.

Ряды (необязательно): второй и более диапазонов или массивов для добавления.

Положительное значение: берет количество строк от начала массива;

Отрицательное значение: берет количество строк с конца массива.

Колонны (необязательно): указанное количество столбцов, которые вы хотите взять.

Положительное значение: берет количество столбцов с начала массива;

Отрицательное значение: Берет количество столбцов с конца массива.

Замечания

1) Хотя оба аргумента Rows и Columns являются необязательными, по крайней мере один из них должен быть указан в функции.

2) #CALC! ошибка возникает при выполнении любого из следующих условий:

— Число, указанное в аргументе rows, равно 0;

Or

— Число, указанное в аргументе столбцов, равно 0.

3) Когда число, указанное в аргументе rows, больше, чем общее количество строк в массиве, будут возвращены все строки.

4) Когда число, указанное в аргументе столбцов, больше, чем общее количество столбцов в массиве, будут возвращены все столбцы.

Возвращаемое значение

Он возвращает подмножество заданного массива.

Пример

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

#Пример1: взять только указанное количество строк или столбцов

Например, вы хотите взять только первые три строки или столбца из таблицы продаж. Вы можете применить одну из формул ниже, чтобы сделать это.

Возьмите только указанное количество строк

Чтобы взять только определенное количество строк, например, первые три строки, вам нужно игнорировать аргумент столбцов.

Выберите ячейку, в данном случае H6, введите приведенную ниже формулу и нажмите клавишу Enter ключ, чтобы получить указанное подмножество.

=TAKE(B6:F19,3)

Возьмите только указанное количество столбцов

Чтобы взять только определенное количество столбцов, например первые три столбца, вам нужно оставить аргумент rows пустым.

Выберите ячейку, в данном случае H6, введите приведенную ниже формулу и нажмите клавишу Enter ключ, чтобы получить указанное подмножество.

=TAKE(B6:F19,,3)

#Пример2: Взять определенные строки или столбцы с конца массива

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

Чтобы взять строки и столбцы с конца массива, вам нужно указать отрицательное число для аргумента строк или столбцов.

Возьмите последние три ряда

Выберите ячейку, в данном случае H6, введите приведенную ниже формулу и нажмите клавишу Enter ключ, чтобы получить последние три строки таблицы продаж.

=TAKE(B6:F19,-3)

Возьмите последние три столбца

Выберите ячейку, в данном случае H6, введите приведенную ниже формулу и нажмите клавишу Enter ключ, чтобы получить последние три столбца таблицы продаж.

=TAKE(B6:F19,,-3)

#Пример3: Возьмите последние 3 столбца первых двух строк из массива

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

=TAKE(B6:F19,2,-3)


Лучшие инструменты для работы в офисе

Kutools for Excel — Помогает вам выделиться из толпы

Хотите быстро и качественно выполнять свою повседневную работу? Kutools for Excel предлагает 300 мощных расширенных функций (объединение книг, суммирование по цвету, разделение содержимого ячеек, преобразование даты и т. д.) и экономит для вас 80 % времени.

  • Разработан для 1500 рабочих сценариев, помогает решить 80% проблем с Excel.
  • Уменьшите количество нажатий на клавиатуру и мышь каждый день, избавьтесь от усталости глаз и рук.
  • Станьте экспертом по Excel за 3 минуты. Больше не нужно запоминать какие-либо болезненные формулы и коды VBA.
  • 30-дневная неограниченная бесплатная пробная версия. 60-дневная гарантия возврата денег. Бесплатное обновление и поддержка 2 года.

Лента Excel (с Kutools for Excel установлены)


Вкладка Office — включение чтения и редактирования с вкладками в Microsoft Office (включая Excel)

  • Одна секунда для переключения между десятками открытых документов!
  • Уменьшите количество щелчков мышью на сотни каждый день, попрощайтесь с рукой мыши.
  • Повышает вашу продуктивность на 50% при просмотре и редактировании нескольких документов.
  • Добавляет эффективные вкладки в Office (включая Excel), точно так же, как Chrome, Firefox и новый Internet Explorer.

Снимок экрана Excel (с установленной вкладкой Office)

  • Первые N символов – формула в Excel
  • Разбить столбец по количеству символов
  • Извлечь первые символы автозаполнением
  • Извлечь первые символы с помощью регулярных выражений
  • Оставить первые / последние N символов в строке в 1 клик

Простейшая задача – взять и отделить от ячейки первый символ, скопировав его в соседний столбец. Или выбрать и оставить в ней первые 2, 3, 4… N символов.

Например, в строках переменной длины первые 6 символов – определенный цифровой код, который нужно скопировать в отдельный столбец.

Или задача является частью другой, где нужно сделать первую букву ячейки заглавной, а для этого, ее нужно вытащить из ячейки.

Рассмотрим все известные решения, снабдив их примерами. Итак, поехали.

Вытащить первый символ или N символов ячейки формулой проще простого. И есть даже 2 функции Excel, которые в этом помогут:

  1. ЛЕВСИМВ;
  2. ПСТР.

А так будут выглядеть формулы, извлекающие первые N символов из ячейки A1. Подставьте свое число вместо N, чтобы формулы работали:

Заметное отличие первой функции от второй — в отсутствии параметра, отвечающего за позицию, с которой начинается извлечение. Поэтому, если вычислить позицию первого вхождения определенного символа в ячейке, с помощью этой функции можно извлечь его, даже если он не является первым символом строки.

Например:

  • извлечь текст после цифр
  • извлечь первые N цифр
  • сделать первую букву ячейки заглавной

Разбить столбец по количеству символов

Можно получить первые N символов столбца, разбив его по количеству символов. Первые N останутся, а остальные будут перенесены в соседний справа. Можно разбить и на несколько — Excel не ставит ограничений на количество столбцов.

извлечение первых символов разбивкой текста по столбцам

Разбиваем столбец на два, оставляя в нем первые 6 символов и переносим оставшиеся в соседний

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

  • разбивка по столбцам не сохраняет исходный столбец
  • это единоразовая процедура, в отличие от формул, которые пересчитываются при обновлении данных
  • удобный момент — одна процедура создает сразу несколько столбцов
  • направление разбивки — только вправо
  • если справа есть данные, они могут быть перезаписаны, если не отменить операцию и не создать пустой столбец/столбцы.

Извлечь первые символы автозаполнением

Автозаполнение – замечательная процедура в Excel. Алгоритм действий прост.

  1. Заполняем пару ячеек соседнего столбца вручную;
  2. Уже при вводе третьей может быть предложено автозаполнение;
  3. Если согласны – жмём клавишу Ввод (Enter).

Однако с этой процедурой нужно быть осторожным. Алгоритм, который используется при автозаполнении, не показывается, поэтому результат может не соответствовать ожиданиям. Обычно алгоритм можно «доучить», чтобы он понял, что от него хотят.

пример работы автозаполнения в Excel

Автозаполнение предлагает извлечь все цифры вначале строки, а не первые две, но алгоритм можно “доучить”.

Извлечь первые символы с помощью регулярных выражений

Чтобы выбрать из строки символы по регулярным выражениям, в Google Spreadsheets доступна функция REGEXEXTRACT. Там она существует уже очень давно.

А вот Microsoft не столь серьезно озадачились вопросом – официально регулярные выражения в Excel существуют только как подключаемый модуль VBA. Поэтому доступны очень узкому кругу посвященных специалистов с навыками программирования на нем.

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

Подробно тут – регулярные выражения в Excel и примеры регулярных выражений. А ниже на картинке – примеры формул, которые позволят извлечь первые N символов, в том числе букв или цифр по отдельности, из любой ячейки.

регулярные выражения по извлечению особых первых символов
Извлекаем первые символы с дополнительными условиями с помощью регулярных выражений

Функции доступны абсолютно бесплатно и работают при подключенной надстройке !SEMTools для Excel даже в стартовой версии.

Оставить первые / последние N символов в строке в 1 клик

Ну и напоследок – на панели !SEMTools доступны процедуры, позволяющие максимально легко и быстро выбрать первые или последние символы из ячеек.

Можно выделять одну ячейку, несколько, целый столбец или даже несколько несвязанных диапазонов – процедура обработает все выделенные данные. При желании можно вернуться назад на 1 шаг.

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

Смотрите демонстрацию ниже:

Как взять первые символы из ячеек Excel с помощью !SEMTools

Берем и вытаскиваем из произвольных ячеек первые / последние символы в 1 клик

Процедуры доступны в полной версии надстройки, но попробовать можно и бесплатно.

Жмите кнопку ниже, чтобы скачать и подключить надстройку к вашему Excel! Процедура займет всего пару минут.

Если вы оказались на этой странице, то наверняка сталкиваетесь с другими похожими задачами.
Сотни инструментов надстройки для Excel !SEMTools помогут решить эти задачи буквально в один клик!

Хитрости »

1 Май 2011              398354 просмотров


Как оставить в ячейке только цифры или только текст?

Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 763шт.». Вам нужно из этого только 763 — чтобы можно было провести с этим некие математические действия. Если это только одна ячейка — проблем тут нет, а если таких ячеек пару тысяч? И к тому же все разные?

  • Было доставлено кусков мыла 763шт.
  • Всего пришло 34
  • Тюбики — 54 доставлено
  • и т.д.

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


СПОСОБ 1: не используем макросы
можно применить формулу массива, вроде такой:
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1)
Три важных момента:

  1. Формула вводится в ячейку сочетанием клавиш Ctrl+Shift+Enter, т.к. является формулой массива. Подробнее про эти формулы читайте в статье: Что такое формула массива
  2. в таком виде формула работает с текстом, количество символов в котором не превышает 99. Чтобы расширить необходимо в формуле во всех местах заменить СТРОКА($1:$99) на СТРОКА($1:$200). Т.е. вместо 99 указать количество символов с запасом. Только не увлекайтесь, иначе может получиться, что формула будет работать слишком долго
  3. формула не обработает корректно текст «Было доставлено кусков мыла 763шт., а заказывали 780» и ему подобный, где числа раскиданы по тексту.

Теперь коротко разберем формулу на примере фразы: Было доставлено кусков мыла 763шт.

  • в A1 сам текст, из которого необходимо извлечь числа: Было доставлено кусков мыла 763шт., а заказывали 780
  • блок: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)))
    вычисляет позицию первой цифры в ячейке — 29
  • блок: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99))
    вычисляет позицию последней цифры в ячейке — 31
  • в результате получается: =ПСТР(A1;29;3129+1)
    функция ПСТР извлекает из текста, указанного первым аргументом(A1) текст, начиная с указанной позиции(29) с количеством символов, указанным третьим аргументом(3129+1)
  • И в итоге:
    =ПСТР(A1;29;3129+1)
    => =ПСТР(A1;29;2+1)
    => =ПСТР(A1;29;3)
    => 763

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

12.08-АГСВ2
12.08-АГСВ1
01.03-ОВ2
12.03-КЖ6.1

Из этих данных надо получить только текст после тире(-) и отсечь цифры на конце:

АГСВ
АГСВ
ОВ
КЖ

Формула будет работать почти по тому же принципу, что и формула выше, но она проще:

=ПСТР(A1;ПОИСК(«-«;A1)+1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(A1;ПОИСК(«-«;A1)+1;999);СТРОКА($1:$99);1));0)-1)

В данном случае мы при помощи

ПОИСК(«-«;A1)

ищем сначала позицию тире, далее при помощи

ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(A1;ПОИСК(«-«;A1)+1;999);СТРОКА($1:$99);1));0)

находим именно в отсеченном тексте позицию первой цифры. Передаем эти значения в

ПСТР

, которая отбирает из этого текста все от первого тире(+1) до первого числа, идущего после текста.


СПОСОБ 2: используем макросы
Самый главный недостаток метода при помощи формулы, приведенной выше — из текста «Было доставлено кусков мыла 763шт., а заказывали 780» формула вернет не только числа, а и текст между первой и последней цифрой: 763шт., а заказывали 780.
Решить же проблему извлечения цифр даже из такого текста при помощи VBA куда проще и гибче. Плюс можно не только цифры извлекать, но и наоборот — цифры удалить, а извлечь только текст. Ниже приведен код пользовательской функции, которая поможет извлечь из строки только числа либо только текст. Иными словами, результатом функции будет либо только текст, либо только числа.

Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer)
'sWord = ссылка на ячейку или непосредственно текст
'Metod = 0 – числа
'Metod = 1 – текст
    Dim sSymbol As String, sInsertWord As String
    Dim i As Integer
 
    If sWord = "" Then Extract_Number_from_Text = "Нет данных!": Exit Function
    sInsertWord = ""
    sSymbol = ""
    For i = 1 To Len(sWord)
        sSymbol = Mid(sWord, i, 1)
        If Metod = 1 Then
            If Not LCase(sSymbol) Like "*[0-9]*" Then
                If (sSymbol = "," Or sSymbol = "." Or sSymbol = " ") And i > 1 Then
                    If Mid(sWord, i - 1, 1) Like "*[0-9]*" And Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        Else
            If LCase(sSymbol) Like "*[0-9.,;:-]*" Then
                If LCase(sSymbol) Like "*[.,]*" And i > 1 Then
                    If Not Mid(sWord, i - 1, 1) Like "*[0-9]*" Or Not Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        End If
    Next i
    Extract_Number_from_Text = sInsertWord
End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions) и применять как обычную функцию на листе.
Для извлечения только чисел
=Extract_Number_from_Text(A1; 0)
или
=Extract_Number_from_Text(A1)
Для извлечения только текста
=Extract_Number_from_Text(A1; 1)

Подробнее про создание пользовательских функции и их применении можно почитать в статье Что такое функция пользователя(UDF)?


Помимо функции пользователя решил выложить и вариант с использованием диалогового окна:

Выбрать ячейку или диапазон с текстом(Лист1!$A$2:$A$10) — здесь указывается диапазон с исходными значениями, из которого необходимо оставить только числа или только текст.

Выберите ячейку для вывода данных(Лист1!$A$2) — указывается одна ячейка, с которой начать вывод преобразованных значений. В качестве этой ячейки можно выбрать первую ячейку диапазона с текстом(исходного) если необходимо произвести изменения сразу в этих же ячейках(как на рисунке). Осторожнее с таким указанием, т.к. результат работы кода может быть не совсем таким, какой вы ожидали, а вернуть прежние данные уже не получится — если только не закрыть файл без сохранения изменений.

Оставить только цифры, Оставить только текст— думаю не надо пояснять. Здесь выбираем, что оставить в качестве результата.

Небольшое дополнение к использованию кода
В коде есть строка:

If LCase(sSymbol) Like "*[0-9.,;:-]*" Then

Данная строка отвечает за текстовые символы, которые могут встречаться внутри чисел и которые надо оставить(не удалять наравне с другими не числовыми символами). Следовательно, если какие-то из данных символов не нужны в конечном тексте — их надо просто удалить. Например, чтобы оставались исключительно числа(без запятых и пр.):

If LCase(sSymbol) Like "*[0-9]*" Then

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

If LCase(sSymbol) Like "*[0-9.]*" Then

и т.д.
Скачать пример:

  Число из текста и наоборот.xls (99,0 KiB, 17 669 скачиваний)

Также см.:
Извлечение числа из текста
Что такое функция пользователя(UDF)?
Как получить адрес гиперссылки из ячейки
Оставить цифры или текст при помощи PowerQuery


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

На чтение 6 мин Просмотров 1.8к. Опубликовано 23.03.2022

Очень жаль, но в Excel на данный момент нет функции, чтобы «достать» число из ячейки, в которой содержится текст.

Но, мы можем использовать комбинацию функций или Visual Basic для выполнения этой задачи.

О чем я?

Допустим, у нас есть обычная ячейка с текстом, в которой есть еще и число (пример на картинке ниже):

И нам необходимо это число записать в отдельной ячейке.

Итак, начнем!

Содержание

  1. Как извлечь число из текстовой строки в Excel 2016
  2. Что функция делает?
  3. Как извлечь число из текстовой строки в Excel более ранних версий
  4. Как разделить строку на текст и число с помощью Visual Basic
  5. Извлекаем только число из текстовой строки используя Visual Basic
  6. Извлекаем только текст из строки используя Visual Basic

Как извлечь число из текстовой строки в Excel 2016

Этот способ будет работать только в Excel 2016 и выше, потому что функция, которую мы будем использовать, была добавлена только в этой версии программы.

Мы будем использовать функцию ОБЪЕДИНИТЬ. Что она делает? Она извлекает все численные значения из строки. Например, у нас есть строка: «Витя купил мороженку за 100 рублей, а Вася за 20 рублей». Результатом выполнения функции будет число «10020».

Формула:

=ОБЪЕДИНИТЬ("";ИСТИНА;ЕСЛИОШИБКА((ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1)*1);""))

Так как мы работаем с массивом, после написания формулы в ячейку нажмите CTRL + SHIFT + ENTER.

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

Что функция делает?

Давайте разберем функцию по частям:

  • СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))) — вычисление начнется с функции ДЛСТР, она вернет нам длину строки. Функция строка вернет массив чисел начиная с 1 и заканчивая тем числом, которое равняется длине нашей строки.
  • (ПСТР(A2,СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2)))),1)*1) — в этой части функции «отметаются» все текстовые значения, они все «падают» в ошибку #!ЗНАЧЕНИЕ. А численные значения остаются.
  • ЕСЛИОШИБКА((ПСТР(A2,СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))),1)*1),»») — в этой части функции все ошибки, полученные ранее удаляются и остаются только численные значения.
  • =ОБЪЕДИНИТЬ(«»;ИСТИНА;ЕСЛИОШИБКА((ПСТР(A2;СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2)));1)*1);»»)) — и, наконец, все значения полученные ранее просто объединяются функцией ОБЪЕДИНИТЬ.

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

По аналогии мы можем получить только текстовое значение из строки (удаляя все числа). Формула функции будет такой:

=ОБЪЕДИНИТЬ("";ИСТИНА;ЕСЛИ(ЕОШИБКА(ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1)*1);ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1);""))))

Разница между этими формулами в том, что функция ЕСЛИ проверяет ошибка ли полученное от ПСТР значение или нет.

Также, как и в прошлом варианте, функция ОБЪЕДИНИТЬ используется для объединения значений.

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

Как извлечь число из текстовой строки в Excel более ранних версий

Итак, в более ранних версиях Excel функции ОБЪЕДИНИТЬ еще нет. Поэтому придется использовать кое-что другое.

Допустим, у нас та же задача:

В таком случае, формула будет такой:

=ЕСЛИ(СУММ(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2; {"0","1","2","3","4","5","6","7","8","9"}, "")))>0; СУММПРОИЗВ(ПСТР(0&A2; НАИБОЛЬШИЙ(ИНДЕКС(ЕЧИСЛО(--ПСТР(A2;СТРОКА(ДВССЫЛ("$1:$"&ДЛСТР(A2)));1))* СТРОКА(ДВССЫЛ("$1:$"&ДЛСТР(A2)));0); СТРОКА(ДВССЫЛ("$1:$"&ДЛСТР(A2))))+1;1) * 10^СТРОКА(ДВССЫЛ("$1:$"&ДЛСТР(A2)))/10);"")

Также, как и в Excel 2016 если функция не нашла чисел, результатом будет пустая строка.

Функция довольно сложная и «тяжелая» — поэтому, при работе с большими объемами данных, её выполнение может занять какое-то время.

Как разделить строку на текст и число с помощью Visual Basic

Как обычно, если вам нужно делать разделение строки очень часто, вы можете использовать для этого собственную функцию, которую мы создадим с помощью Visual Basic.

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

Итак, сейчас я продемонстрирую вам как создать две разные функции. Одна будет извлекать из строки только числа, а вторая только текст.

Извлекаем только число из текстовой строки используя Visual Basic

Итак, сейчас мы будем создавать свою собственную функцию для разделения строки на численные значения и текст.

Код Visual Basic:

Function GetNumeric(CellRef As String) Dim StringLength As Integer StringLength = Len(CellRef) For i = 1 To StringLength If IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1) Next i GetNumeric = Result End Function  

Пошаговая инструкция:

  • Щелкните на «Разработчик»;

  • Далее — «Visual Basic» (или горячие клавиши ALT + F11);

  • В окошке Visual Basic правой кнопкой мышки на ваш лист;

  • Далее «Insert» -> «Module»;

  • В открывшееся окошко поместите наш код;

  • Закройте Visual Basic;

Итак, мы создали функцию для получения всех чисел из текстовой строки и назвали её GetNumeric. Теперь давайте попробуем использовать её.

В результате её выполнения мы получили число из строки текста.

Не забывайте, что на данный момент нам необходимо сохранить файл Excel с соответствующим расширением, так как в нем используется Visual Basic макрос.

Также можно сохранить эту функцию в книгу макросов Excel. Таким образом, её использование будет еще быстрее и удобнее.

Извлекаем только текст из строки используя Visual Basic

А теперь давайте создадим функцию, которая будет получать только текст из строки(без чисел).

Код Visual Basic:

Function GetText(CellRef As String) Dim StringLength As Integer StringLength = Len(CellRef) For i = 1 To StringLength If Not (IsNumeric(Mid(CellRef, i, 1))) Then Result = Result & Mid(CellRef, i, 1) Next i GetText = Result End Function

Пошаговая инструкция:

  • Щелкните на «Разработчик»;

  • Откройте «Visual Basic»;

  • В окошке Visual Basic нажмите правой кнопкой мышки на ваш лист;

  • Далее «Insert» -> «Module»;

  • И поместите наш код в открывшееся окошко;

  • Закройте Visual Basic.

Эта функция будет разделять строку на текст и числа, а после возвращать нам в результате только текст.

Давайте проверим как она работает:

Не забывайте, что на данный момент нам необходимо сохранить файл Excel с соответствующим расширением, так как в нем используется Visual Basic макрос.

Также можно сохранить эту функцию в книгу макросов Excel. Таким образом, её использование будет еще быстрее и удобнее.

Формулы в этой статье полезны для извлечения слов из текста, содержащегося в ячейке. Например, вы можете создать формулу для извлечения первого слова в предложении.

Извлечение первого слова из строки

Чтобы извлечь первое слово из строки, формула должна найти позицию первого символа пробела, а затем использовать эту информацию в качестве аргумента для функции ЛЕВСИМВ. Следующая формула делает это: =ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1).

Эта формула возвращает весь текст до первого пробела в ячейке A1. Однако у нее есть небольшой недостаток: она возвращает ошибку, если текст в ячейке А1 не содержит пробелов, потому что состоит из одного слова. Несколько более сложная формула решает проблему с помощью новой функции ЕСЛИОШИБКА, отображая все содержимое ячейки, если произошла ошибка:
=ЕСЛИОШИБКА(ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1);A1).

Если вам нужно, чтобы формула была совместима с более ранними версиями Excel, вы не можете использовать ЕСЛИОШИБКА. В таком случае придется обойтись функцией ЕСЛИ и функцией ЕОШ для проверки на ошибку:
=ЕСЛИ(ЕОШ(НАЙТИ(" ";A1));A1;ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1))

Извлечение последнего слова строки

Извлечение последнего слова строки — более сложная задача, поскольку функция НАЙТИ работает только слева направо. Таким образом, проблема состоит в поиске последнего символа пробела. Следующая формула, однако, решает эту проблему. Она возвращает последнее слово строки (весь текст, следующий за последним символом пробела):
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ("*";ПОДСТАВИТЬ(A1;" ";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"";"")))))

Но у этой формулы есть такой же недостаток, как и у первой формулы из предыдущего раздела: она вернет ошибку, если строка не содержит по крайней мере один пробел. Решение заключается в использовании функции ЕСЛИОШИБКА и возврате всего содержимого ячейки А1, если возникает ошибка:
=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ("*";ПОДСТАВИТЬ(A1;" ";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";"")))));A1)

Следующая формула совместима со всеми версиями Excel:
=ЕСЛИ(ЕОШ(НАЙТИ(" ";A1));A1;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ("*";ПОДСТАВИТЬ(A1;"";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))))

Извлечение всего, кроме первого слова строки

Следующая формула возвращает содержимое ячейки А1, за исключением первого слова:
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(" ":A1;1)).
Если ячейка А1 содержит текст 2008 Operating Budget, то формула вернет Operating Budget.

Формула возвращает ошибку, если ячейка содержит только одно слово. Следующая версия формулы использует функцию ЕСЛИОШИБКА, чтобы можно было избежать ошибки; формула возвращает пустую строку, если ячейка не содержит более одного слова:
=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(" ";A1;1));"")

А эта версия совместима со всеми версиями Excel:
=ЕСЛИ(ЕОШ(НАЙТИ(" ";A1));"";ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(" ";A1;1)))

Понравилась статья? Поделить с друзьями:
  • Функция в excel ввод текста
  • Функция в excel абсолютные диапазон
  • Функция в excel year
  • Функция в excel sql
  • Функция в excel minverse