- Последние N символов – Excel-формула
- Оставить последние N символов в ячейках в 1 клик
При работе с текстом часто бывает нужно отделить нескольких ячеек столбца последние символы, скопировав их в соседний. Или оставить прямо в самих ячейках столбца последние 2, 3, 4… N символов.
К сожалению, встроенной процедуры, которая позволила бы это сделать парой кликов мыши, в Excel нет, но зато можно использовать формулу.
Вывести в отдельную ячейку последний символ или N символов ячейки формулой довольно просто. В этом поможет функция ПРАВСИМВ.
Пример с извлечением одного символа из ячейки A1:
Оставить последние N символов в ячейках в 1 клик
Поскольку формулы – это долго, всегда требуют создания дополнительных столбцов, я разработал в своей надстройке соответствующие процедуры.
Они доступны с панели !SEMTools в пару кликов. Извлекаемое количество придется вбить в предназначенное для этого окошко ввода.
Преимущества решения:
- Процедура обработает все выделенные данные. Можно выделять
- одну ячейку,
- несколько,
- целый столбец
- или даже несколько несвязанных диапазонов
- При желании можно вернуться назад на 1 шаг
- Есть опция “Выводить результат справа”. Позволяет вывести извлеченные данные в соседний столбец или столбцы.
Пример ниже:
Процедуры доступны в полной версии надстройки, но попробовать можно и бесплатно.
P.S. вероятно, после отделения последних символов в соседний столбец, вам может потребоваться удалить последние N символов в ячейках исходного столбца.
Если вы столкнулись с этой задачей, наверняка сталкиваетесь и с множеством других, которые сложно сделать в Excel. !SEMTools — это сотни инструментов, которые существенно упростят выполнение задач и сэкономят ваше время!
dyhes Пользователь Сообщений: 10 |
Доброго времени суток! Вопрос в следующем: как изъять из ячейки только последнее число. Решений относительно отбора всех чисел (цифр) из ячейки несколько, а алгоритма по которому будет происходить отбор числа определенного порядка (первого, второго, последнего и т.п в ячейке.) я не нашел. Т.е. макрос (или формула) должен подсчитать общее количество чисел в ячейке и отобразить последнее число. (нужен именно такой алгоритм, чтобы потом можно было отобрать, например, только первое, второе число) Надстрочные и подстрочные числа не рассматриваются как числа Прикрепленные файлы
Изменено: dyhes — 12.04.2016 21:21:37 |
LVL Пользователь Сообщений: 903 |
Привязываться к порядковому номеру числа сомнительная затея, на сколько я понимаю нужно вытаскивать значения неких физических величин. Я бы делал это с помощью регулярных выражений, но это выходит за рамки «формульного» решения. |
Сергей Пользователь Сообщений: 11251 |
не панацея но на примере работат Прикрепленные файлы
Лень двигатель прогресса, доказано!!! |
sv2013 Пользователь Сообщений: 657 |
#4 12.04.2016 14:42:06 вариант функции uuu в столбце G для данного файл- примера
Прикрепленные файлы
Изменено: sv2013 — 12.04.2016 14:42:25 |
||
dyhes Пользователь Сообщений: 10 |
sv2013, почти, но здесь решение частное, возможно, неудачный пример. Нужно сделать то же самое, но без привязки к словам более и менее и любым другим. Текст может быть любой Нужна привязка к порядку числа, т.е. макрос должен определить сколько всего чисел в ячейке, а уже потом выбрал последнее Изменено: dyhes — 12.04.2016 17:56:49 |
Jack_Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#6 12.04.2016 18:09:01 С макросами у меня туго, так что, как вариант, такая методика (для ячейки A1): 1. Берём Супер-UDF у Дмитрия «The_Prist» тут и меняем в коде
на
Дмитрий даёт пояснения, зачем… Теперь при применении этой UDF в доп. столбце №1 на ИСХОДНУЮ ячейку, вернуться числа с кучей пробелов между ними. приёмов на доп. столбец №2, она считает количество чисел. приёмов на доп. столбец №2 (источник текста) и доп. столбец №3 (номер последнего слова). P.S: sv2013 , при изменении количества чисел, UDF перестаёт работать 18:30. Соорудил БОМБУ, возьмёте в избушку? Решение одной формулой для ячейки A1: =ЕСЛИОШИБКА(ПРАВСИМВ(СЖПРОБЕЛЫ(Extract_Number_Or_Text(A1));ДЛСТР(СЖПРОБЕЛЫ(Extract_Number_Or_Text(A1)))-НАЙТИ(«*»;ПОДСТАВИТЬ(СЖПРОБЕЛЫ(Extract_Number_Or_Text(A1));» «;»*»;ДЛСТР(СЖПРОБЕЛЫ(Extract_Number_Or_Text(A1)))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(Extract_Number_Or_Text(A1));» «;»»)))));СЖПРОБЕЛЫ(Extract_Number_Or_Text(A1))), Изменено: Jack_Famous — 12.04.2016 20:40:52 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||||
sv2013 Пользователь Сообщений: 657 |
#7 12.04.2016 20:26:48 вариант макроса для #5 в столбце I
Прикрепленные файлы
Изменено: sv2013 — 12.04.2016 20:27:10 |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
И мой вариант для последнего числа (макрос). Только вот с квадратными миллиметрами засада: по условию должно отобразиться 2, а в файле в примере показано 1280,5. Если так, то нужно уточнять условия. Количество не считал. Прикрепленные файлы
|
Jack_Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
sv2013
, есть ли простой способ объяснить, как вы обошли «мм2» (ОЧЕНЬ слабо знаком с VBA)? Я так думаю, что в этом случае «2» не нужно вытаскивать…(лично мне точно, хоть в противном случае можно и заранее «мм2» и всё такое заменить на пустоту). Изменено: Jack_Famous — 12.04.2016 21:08:49 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
А с каких это пор «двойка» не является числом? )) |
Jack_Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Юрий М
,
Ошибся, Юрий — там точка стояла окаянная )))) Изменено: Jack_Famous — 12.04.2016 21:29:46 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#12 12.04.2016 21:12:18 sv2013, — спаразитировал на Вашей функции:
как видно, добавил пару моментов: Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
sv2013 Пользователь Сообщений: 657 |
Jack_Famous,посмотрите текст функции uuu2, там применена негативная опережающая проверка (?!),если интересуетесь регулярными |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Да дело не в точке, как таковой: тогда нужно менять условия: надстрочные (и подстрочные?) символы не рассматривать, как числа. А при имеющейся постановке вопроса в пятой строке последним числом является 2. |
Jack_Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
sv2013
, это не я писал, а dyhes ))) насчёт ваших пояснений — я, конечно, ничего не понял, ну ничего — всё впереди))) а насчёт «точки» и «-» — это лично моё мнение, возможно отличное от автора (хочу к себе в копилку, кстати вторая за день от sv2013 ). Просто, если я числа вытаскиваю, то мне важно больше оно нуля или меньше (типа, если стоит перед числом слитно «-«, то отрицательное, возможно как дополнительный параметр функции — типа определять отрицательные или нет), ну и точка эта мерзкая, конечно всё портит… У модернизации от The_Prist , кстати, те же проблемы… В любом случае ваши решения много круче моей «бомбы» и всё остаётся на ваше (и, частично, автора) усмотрение )))) Изменено: Jack_Famous — 12.04.2016 21:27:17 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
dyhes Пользователь Сообщений: 10 |
Юрий М,все верно, условие в шапке изменил |
dyhes Пользователь Сообщений: 10 |
Всем большое спасибо! Изменено: dyhes — 12.04.2016 21:39:10 |
sv2013 Пользователь Сообщений: 657 |
dyhes,Вы предложили в файл-примере,в соответствии с правилами форума,что дано(как надо),-в соответствии с этим здесь на форуме составляют формулы и функции. |
Jack_Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
dyhes
, или используйте модернизацию от The_Prist (пост №12), если КОНКРЕТНОЕ по счёту… Изменено: Jack_Famous — 12.04.2016 22:00:07 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
dyhes Пользователь Сообщений: 10 |
sv2013, 1. По аналогии нужно изъять предпоследнее число вместо последнего 2. Нужно отобразить количество чисел в ячейке (по прежнему над- и подстрочные не рассматриваются в качестве чисел) Пример прикладываю Прикрепленные файлы
|
dyhes Пользователь Сообщений: 10 |
Jack_Famous, решение от The_Prist хорошее и действительно практически универсальное, но в моем случае это не подходит, т.к. в ячейке может быть разное количество чисел и знать порядковый номер последнего (предпоследнего) не представляется возможным.. |
sv2013 Пользователь Сообщений: 657 |
#22 12.04.2016 22:36:28 вариант для #20,предпоследнее число, функция uuu3 в столбце E,количество чисел ,функция uuu4 в столбце I
Прикрепленные файлы
Изменено: sv2013 — 12.04.2016 22:36:55 |
||||
sv2013 Пользователь Сообщений: 657 |
не загрузился файл,повторно загружаю |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
sv2013, а если будет Полезное сечение должно быть более 1280,5 мм2 сердечника из меди.? |
sv2013 Пользователь Сообщений: 657 |
#25 12.04.2016 23:18:47 Андрей VG, добрый вечер,Вы,фактически меняете файл пример(что дано),тогда еще надо указать как надо и что искать последнее или предпоследнее
Прикрепленные файлы
Изменено: sv2013 — 12.04.2016 23:19:10 |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#26 12.04.2016 23:26:06
Тут ещё само название темы грешит неточностью формулировки — расходится с задачей: если именно изъять, то нужно «на месте» модифицировать строку ) |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#27 13.04.2016 00:03:25
Разве я что-то поменял? Всего лишь указал, что способ определения надстрочного символа по точке после числа несколько недостаточный (всего лишь добавил немного текста после миллиметров квадратных). А если будет Изменено: Андрей VG — 13.04.2016 00:04:24 |
||
sv2013 Пользователь Сообщений: 657 |
Андрей VG, добавил Ваши варианты в файл пример(B7,B8),видно,что Ваш последний вариант(B8) не представляет трудности для функций |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#29 13.04.2016 09:59:53 Доброе время суток Прикрепленные файлы
|
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Еще…Меньше
Предположим, что для общих мер безопасности нужно отобразить только последние четыре цифры идентификации или номера социального обеспечения, номера кредитной карты или другого номера и заменить остальные цифры звездочками. Независимо от того, имеют ли цифры в ячейке текстовый, числовой или специальный формат номера социального страхования (SOCIALS), вы можете использовать те же функции. Чтобы отобразить только четыре последних цифры идентификационных номеров, используйте функции С ФУНКЦИИ СЕКАТЬ, ПРАВБ и ПОВТОРНО.
Пример
Чтобы этот пример проще было понять, скопируйте его на пустой лист.
Копирование примера
-
Создайте пустую книгу или лист.
-
Выделите пример в разделе справки.
Примечание: Не выделяйте заголовки строк или столбцов.
Выделение примера в справке
-
Нажмите клавиши CTRL+C.
-
Выделите на листе ячейку A1 и нажмите клавиши CTRL+V.
-
Чтобы переключиться между просмотром результатов и просмотром формул, возвращающих эти результаты, нажмите клавиши CTRL+` (знак ударения) или на вкладке Формулы в группе Зависимости формул нажмите кнопку Показывать формулы.
A |
B |
|
---|---|---|
1 |
Type (Тип) |
Данные |
2 |
Номер социального обеспечения |
555-55-5555 |
3 |
Номер кредитной карты |
5555-5555-5555-5555 |
4 |
Формула |
Описание (результат) |
5 |
=СЕКАТОН(«***-*-«; ПРАВБ(B2;4)) |
Объединяет последние четыре цифры SSN с текстовой строкой «***-*-» (**-**-5555). |
6 |
=СЕКАNATE(REPT(«***-«;3); ПРАВАЯ(B3;4)) |
Повторяет текстовую строку «***-» три раза и объединяет результат с четырьмя последними цифрами номера кредитной карты w(***-*-****-5555) |
Примечание по безопасности: В этом примере необходимо скрыть столбец B и защитить его, чтобы исходные данные было невозможно просмотреть.
Описание функций
СЦЕПИТЬ
RIGHT, RIGHTB
REPT
Нужна дополнительная помощь?
Чтобы сохранить конфиденциальность номера социального страхования, многие пользователи Excel обычно показывают только последние 4 цифры ssn в Excel. Эта статья покажет вам способы скрыть все числа ssn-номера, кроме последних 4 цифр в Excel.
Показывать только последние 4 цифры ssn с формулой
Показывать только последние 4 цифры ssn с кодом VBA
Удалите все цифры ssn, кроме последних 4 цифр с помощью Kutools for Excel
Показывать только последние 4 цифры ssn с формулой
Следующая формула может помочь вам отобразить только последние 4 цифры ssn в Excel. Пожалуйста, сделайте следующее.
1. Выберите пустую ячейку, введите формулу. =RIGHT(A2,4) в панель формул, а затем нажмите Enter ключ. Смотрите скриншот:
Внимание: В формуле A2 — это ячейка, содержащая номер социального страхования.
2. Продолжая выбирать первую ячейку результата, перетащите маркер заполнения вниз, чтобы получить все результаты, как показано на скриншоте ниже.
Показывать только последние 4 цифры ssn с кодом VBA
Следующий код VBA может помочь вам автоматически отображать только последние 4 цифры при вводе номера социального страхования. Пожалуйста, сделайте следующее.
1. На листе, который вы хотите отображать только последние 4 цифры номера социального страхования, щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню. Смотрите скриншот:
2. в Microsoft Visual Basic для приложений окно, скопируйте ниже код VBA в окно кода.
Код VBA: показывать только последние 4 цифры номера социального страхования в Excel
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
Dim xVal As String
On Error Resume Next
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For I = 1 To Target.Count
If Len(Target(I).Text) >= 4 Then
Target(I).Value = Right(Target(I).Value, 4)
End If
Next
Application.EnableEvents = True
End Sub
Note: In the code, A:A is the column you will enter social security number into. Please change it as you need.
3. Press the Alt + Q keys to exit the Microsoft Visual Basic for Applications window.
From now on, when entering social security number into cells in column A, all digits will be hidden automatically except for the last 4 numbers.
Delete all digits of ssn except the last 4 digits with Kutools for Excel
You can remove all numbers from the social security number except for the last 4 digits with the Remove by Position utility of Kutools for Excel. Please do as follows.
Before applying Kutools for Excel, please download and install it firstly.
1. Select all cells containing social security numbers, then click Kutools > Text > Remove by Position.
2. In the Remove by Position dialog box, select the From left option in the Position section, specify how numbers you will remove from left in the Numbers box (here I enter number 7), and then click the OK button. See screenshot:
Then all numbers are removed from the selected cells except for the last 4 digits.
If you want to have a free trial (30-day) of this utility, please click to download it, and then go to apply the operation according above steps.
The Best Office Productivity Tools
Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%
- Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails…
- Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range…
- Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns… Prevent Duplicate Cells; Compare Ranges…
- Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select…
- Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more…
- Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments…
- Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic…
- Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF…
- More than 300 powerful features. Supports Office / Excel 2007-2021 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.
Read More… Free Download… Purchase…
Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier
- Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
- Open and create multiple documents in new tabs of the same window, rather than in new windows.
- Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!
Read More… Free Download… Purchase…
Последние цифры заменяются на ноли при введении длинных чисел в ячейки Excel
При введении числа, содержащего более 15 цифр в ячейку в Microsoft Excel, Excel заменяет любые цифры после пятнадцатого разряда на ноли. Например, введите идентификационный номер кредитной карты в следующем формате:
В этом случае Excel заменяет последнюю цифру на ноль.
Причина
Excel следует спецификации IEEE 754 в отношении хранения и вычисления чисел с плавающей точкой. Excel сохраняет только 15 значащих цифр числа и изменяет цифры после пятнадцатого разряда на ноль
Обходной путь
Добавить кавычку
Чтобы предотвратить изменение цифр на ноли, добавьте одинарную кавычку перед вводом числа.
Для этого выделите пустую ячейку, введите одну кавычку (‘), а затем введите число. Все цифры отображаются в ячейке.
Формат ячеек
Чтобы не вводить кавычку в каждой ячейке, перед вводом каких-либо данных можно задать для этих ячеек текстовый формат.
Выберите все затронутые ячейки и нажмите Ctrl+1, чтобы открыть диалоговое окно Формат ячеек.
На вкладке Число выберите Текст из списка Категория, а затем выберите ОК.
Дополнительная информация
Это происходит только в том случае, если для ячейки задан формат Число, а введенное число содержит более 15 цифр. В форматированные в виде текста ячейки можно ввести до 32 767 символов. На листе Excel отображается до 1024 символов.
Так как настраиваемые форматы чисел предназначены для работы в основном с числами, невозможно создать настраиваемый формат номеров, который хранит более 15 цифр. Например, нельзя использовать следующий формат для хранения 16-символьного удостоверения кредитной карты в виде числа:
Однако, если ввести такое число в ячейке, которая форматирована как текст, все символы остаются в том виде, в котором они введены, так как Excel сохраняет это число в виде текста, а не числа.
excel заменяет последние цифры на нули
EXCEL хранит и выполняет вычисления с точностью 15 значащих цифр. Поэтому, не получится ввести 20-и значное число без того, чтобы EXCEL автоматически округлил его с точностью до 100 тыс. Используем текстовый формат для отображения таких чисел.
То, что вычисления в EXCEL производятся с точностью 15 значащих цифр, проявляется, например, при записи в ячейку целого двадцатизначного числа.
После нажатия клавиши ENTER происходит округление целого числа до 15 значащих цифр, последние цифры заменяются нулями (см. Строку формул на рисунке ниже). К числу будет применен экспоненциальный формат (см. ячейку А1 на рисунке ниже).
Увеличить точность вычислений в EXCEL нельзя. Однако, если не предполагается участие чисел в математических операциях, то для их хранения можно использовать текстовый формат. Такое решение подходит, например, для хранения номеров банковских счетов.
Для перевода ячейки в текстовый формат достаточно поставить перед значением апостроф (‘) или перед вводом изменить формат ячейки (CTRL+1) на Текстовый.
Примечание. При подсчете таких значений могут возникнуть сложности (см. статью Подсчет ТЕКСТовых значений с единственным критерием в MS EXCEL).
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Вам когда-нибудь приходилось импортировать или вводить в Excel данные, содержащие начальные нули (например, 00123) или большие числа (например, 1234 5678 9087 6543)? Это могут быть номера социального страхования, телефонные номера, номера кредитных карт, коды продуктов, номера счетов или почтовые индексы. Excel автоматически удаляет начальные нули и преобразует большие числа в экспоненциальное представление (например, 1,23E+15), чтобы их можно было использовать в формулах и математических операциях. В этой статье объясняется, как сохранить данные в исходном формате, который Excel обрабатывает как текст.
Преобразование чисел в текст при импорте текстовых данных
Для форматирования отдельных столбцов в виде текста при импорте данных в Excel используйте функцию Получить и преобразовать (Power Query). В этом случае импортируется текстовый файл, однако данные проходят те же этапы преобразования, что и при импорте из других источников, таких как XML, Интернет, JSON и т. д.
Откройте вкладку Данные, нажмите кнопку Получить данные и выберите вариант Из текстового/CSV-файла. Если вы не видите кнопку Получить данные, выберите Создать запрос > Из файла > Из текста, найдите нужный файл и нажмите кнопку Импорт.
Excel загрузит данные в область предварительного просмотра. Нажмите кнопку ” изменить ” в области предварительного просмотра, чтобы загрузить Редактор запросов.
Если какие-либо столбцы нужно преобразовать в текст, выделите их, щелкнув заголовок, затем выберите Главная > Преобразовать > Тип данных > Текст.
Совет: Чтобы выбрать несколько столбцов, щелкните их левой кнопкой мыши, удерживая нажатой клавишу CTRL.
В диалоговом окне Изменение типа столбца выберите команду Заменить текущие, и Excel преобразует выделенные столбцы в текст.
преобразование данных в текст” />
По завершении нажмите кнопку Закрыть и загрузить, и Excel вернет данные запроса на лист.
Если в дальнейшем ваши данные изменятся, на вкладке Данные нажмите кнопку Обновить, и Excel их автоматически обновит и преобразует.
В Excel 2010 и Excel 2013 импортировать текстовые файлы и преобразовывать числа в текст можно двумя способами. Рекомендуется использовать Power Query (для этого нужно скачать надстройку Power Query). Если надстройку Power Query скачать не удается, можно воспользоваться мастером импорта текста. В этом случае импортируется текстовый файл, однако данные проходят те же этапы преобразования, что и при импорте из других источников, таких как XML, Интернет, JSON и т. д.
На ленте откройте вкладку Power Query и выберите Получение внешних данных > Из текста.
Excel загрузит данные в область предварительного просмотра. Нажмите кнопку ” изменить ” в области предварительного просмотра, чтобы загрузить Редактор запросов.
Если какие-либо столбцы нужно преобразовать в текст, выделите их, щелкнув заголовок, затем выберите Главная > Преобразовать > Тип данных > Текст.
Совет: Чтобы выбрать несколько столбцов, щелкните их левой кнопкой мыши, удерживая нажатой клавишу CTRL.
В диалоговом окне Изменение типа столбца выберите команду Заменить текущие, и Excel преобразует выделенные столбцы в текст.
преобразование данных в текст” />
По завершении нажмите кнопку Закрыть и загрузить, и Excel вернет данные запроса на лист.
Если в дальнейшем ваши данные изменятся, на вкладке Данные нажмите кнопку Обновить, и Excel их автоматически обновит и преобразует.
Применение пользовательского формата для сохранения начальных нулей
Если эту задачу необходимо решить в пределах книги, поскольку она не используется другими программами в качестве источника данных, для сохранения начальных нулей можно использовать пользовательский или специальный формат. Этот способ подходит для цифровых кодов, содержащих менее 16 цифр. Цифровые коды также можно отформатировать с использованием дефисов или других знаков препинания. Например, чтобы сделать телефонные номера более удобными для чтения, можно добавить дефисы между международным кодом, кодом области, префиксом и остальными цифрами.
Почему excel меняет цифры
Автор Александр Привизенцев задал вопрос в разделе Программное обеспечение
Эксель 2003 при вводе в ячейку 20-значного числа (номер счета) последние три-четыре цифры заменяет на ноль. Как исправить и получил лучший ответ
Ответ от Почтальон Печкин[гуру]
поставьте текстовый формат и тогда уже пропишите число, либо пропишите формулой =”12345678901234567891″
Тема: Длинное число в Excel
киник Регистрация 24.02.2002 Адрес Москва Сообщений 36,128
- Просмотр профиля
- Сообщения форума
- Блог
- Просмотр профиля
- Сообщения форума
- Блог
- Домашняя страница
Клерк Регистрация 12.12.2002 Адрес Ярославль Сообщений 66,413
- Просмотр профиля
- Сообщения форума
- Блог
- Просмотр профиля
- Сообщения форума
- Блог
- Просмотр профиля
- Сообщения форума
- Блог
- Домашняя страница
Клерк Регистрация 12.12.2002 Адрес Ярославль Сообщений 66,413
- Просмотр профиля
- Сообщения форума
- Блог
- Просмотр профиля
- Сообщения форума
- Блог
Сообщение от ЕВС
Ошибочка
Вы нам показали экспоненциальную запись числа. Excel так «нещадно» поступает, если для отображения числа недостаточно ширины столбца. Он (Excel) по доброте своей неодушевленной пытается нам помочь.
Наибольшее возможное число в Excel — 9E+307.
Сообщение от YUM
Не Станиславский, но не верю
Очень хочется увидеть в Excel ЧИСЛОВУЮ запись ЧИСЛА длиной более 15 знаков с младшими разрядами, отличными от нуля.
Сообщение от YUM
Сообщение от vikttur
- Просмотр профиля
- Сообщения форума
- Блог
Клерк Регистрация 27.03.2002 Сообщений 11,856
Сообщение от vikttur
Сообщение от office.microsoft.com:
- Просмотр профиля
- Сообщения форума
- Блог
Ворчун (может, и не совсем старый? ), мой текст относился к сообщению YUM о возможности ввода такого длинного числа. Потому-то и «Очень хочется увидеть. «.
Сообщение от Аноним
Сообщение от vikttur
- Просмотр профиля
- Сообщения форума
- Блог
Я не пытаюсь доказать, что р/счет — число или не число.
Разговор о конкретной ситуации: при заполнении листа данными введенная в ячейку информация была воспринята Excel’ем как число.
Почему? Потому что для него это число.
Как обойти? Показать табличному монстру, что это текст.
- Просмотр профиля
- Сообщения форума
- Блог
Доброго времени суток, уважаемые)
При составление различных расчетных таблиц в EXSEL получается вот какая ситуация: при расчете 10839,60 * 2,6% = 281,8296. По-моему мнению, это 281,83, а по EXSEL так и есть 281,8296. Даже если выставить формат ячейки «числовой»- «2 знака после запятой», EXSEL все равно держит «в уме» остальные цифры и при суммировании их учитывает.
Когда в таблице 20 строк (например, по количеству человек) итоговая сумма, чаще всего, получается на 1 или 2 копейки больше. Приходится каждый раз копировать полученные значения, вставлять через «Специальная вставка» — «значение» в эту же колонку, и в ручную убирать лишнее знаки после запятой.
Может быть есть какие-то настройки.
- Просмотр профиля
- Сообщения форума
- Блог
- Домашняя страница
Клерк Регистрация 12.12.2002 Адрес Ярославль Сообщений 66,413
- Просмотр профиля
- Сообщения форума
- Блог
- Просмотр профиля
- Сообщения форума
- Блог
Доброго времени суток, уважаемые)
При составление различных расчетных таблиц в EXSEL получается вот какая ситуация: при расчете 10839,60 * 2,6% = 281,8296. По-моему мнению, это 281,83, а по EXSEL так и есть 281,8296. Даже если выставить формат ячейки «числовой»- «2 знака после запятой», EXSEL все равно держит «в уме» остальные цифры и при суммировании их учитывает.
Когда в таблице 20 строк (например, по количеству человек) итоговая сумма, чаще всего, получается на 1 или 2 копейки больше. Приходится каждый раз копировать полученные значения, вставлять через «Специальная вставка» — «значение» в эту же колонку, и в ручную убирать лишнее знаки после запятой.
Может быть есть какие-то настройки.
- Просмотр профиля
- Сообщения форума
- Блог
Клерк Регистрация 27.03.2002 Сообщений 11,856
Сообщение от konowalowadiana
Когда в таблице 20 строк (например, по количеству человек) итоговая сумма, чаще всего, получается на 1 или 2 копейки больше.
Может быть есть какие-то настройки.
есть: параметры — вычисления — точность как на экране. позволяет избавиться от многочисленных «ОКРУГЛ()» в ячейках.
Но копейка всё равно может вылезти.
Ибо:
1,00/3,00=0,33
0,33*3,00=0,99
- Просмотр профиля
- Сообщения форума
- Блог
Сообщение от konowalowadiana
Доброго времени суток, уважаемые)
При составление различных расчетных таблиц в EXSEL получается вот какая ситуация: при расчете 10839,60 * 2,6% = 281,8296. По-моему мнению, это 281,83, а по EXSEL так и есть 281,8296. Даже если выставить формат ячейки «числовой»- «2 знака после запятой», EXSEL все равно держит «в уме» остальные цифры и при суммировании их учитывает.
Когда в таблице 20 строк (например, по количеству человек) итоговая сумма, чаще всего, получается на 1 или 2 копейки больше. Приходится каждый раз копировать полученные значения, вставлять через «Специальная вставка» — «значение» в эту же колонку, и в ручную убирать лишнее знаки после запятой.
Skip to content
В этом кратком руководстве показано, как можно быстро извлекать число из различных текстовых выражений в Excel с помощью формул или специального инструмента «Извлечь».
Проблема выделения числа из текста возникает достаточно часто, особенно когда вы работаете с данными, полученными из других программ. К примеру, нужно вытащить почтовый индекс из адреса, номенклатурный номер из строки с наименованием товара, номер счета из платежного документа. Нужное нам число может находиться в любом месте текста — в начале, в середине или в конце.
Вот что мы рассмотрим в этой статье:
- Как извлечь число в конце текста
- Получаем число из начала текста
- Как извлечь все числа из текста
- Извлекаем числа без формул при помощи Ultimate Suite
Когда дело доходит до извлечения части текстового значения заданной длины, Эксель предоставляет три текстовых функции (ЛЕВСИМВ, ПРАВСИМВ и ПСТР) для быстрого выполнения этой задачи. А вот когда дело доходит до извлечения числа из буквенно-цифровой строки, Microsoft Excel … не предоставляет ничего.
Чтобы извлечь число из текста в Excel, требуется немного изобретательности, немного терпения и множество различных функций, вложенных друг в друга.
Или вы можете запустить инструмент «Извлечь (Extract)» из надстройки Ablebits Ultimate Suite и выполнить эту операцию одним щелчком мыши. Ниже вы найдете полную информацию обо всех этих методах.
Как извлечь число из конца текстовой строки.
Если у вас есть столбец буквенно-цифровых значений, в котором число всегда идет после текста, вы можете использовать одну из следующих формул, чтобы вытащить из них числа.
Важное замечание! В приведенных ниже формулах извлечение выполняется с помощью функций ПРАВСИМВ и ЛЕВСИМВ, которые относятся к категории текстовых функций. Эти функции всегда возвращают текст. В нашем случае результатом будет числовая подстрока, которая с точки зрения Excel также является текстом, а не числом. Если вам нужно, чтобы результат был числом (которое можно использовать в дальнейших вычислениях), оберните соответствующую формулу в функцию ЗНАЧЕН, или выполните с ней простейшую математическую операцию (например, двойное отрицание).
Чтобы извлечь число из строки «текстовое число», первое, что вам нужно знать, — это с какой позиции начать операцию. Итак, давайте определим положение первой цифры с помощью этой общего выражения:
=МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9}; ячейка &»0123456789″))
О логике вычислений мы поговорим чуть позже. На данный момент просто замените слово «ячейка» ссылкой на позицию, содержащую исходный текст (в нашем случае A2), и запишите получившееся выражение в любую пустую клетку той же строки, скажем, в B2:
=МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))
Хотя формула содержит константу массива, это обычное выражение, которое вводится обычным способом: нажатием клавиши Enter.
Как только позиция первой цифры определена, можно использовать функцию ПРАВСИМВ для извлечения числа. Чтобы узнать, сколько символов нужно извлечь, вы вычитаете позицию первой цифры из общей длины строки и добавляете единицу к результату, потому что первая цифра также должна быть включена:
=ПРАВСИМВ(A2;ДЛСТР(A2)-B2+1)
Где A2 — исходная ячейка, а B2 — позиция первой цифры.
На следующем скриншоте показаны результаты:
Чтобы исключить вспомогательный столбец, содержащий позицию первой цифры, вы можете встроить формулу МИН непосредственно в функцию ПРАВСИМВ следующим образом:
=ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1)
Чтобы формула возвращала именно число, а не числовую строку, вложите ее в функцию ЗНАЧЕН:
=ЗНАЧЕН(ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1))
Или просто примените двойное отрицание, использовав два знака «минус»:
=—ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1)
Другой способ извлечь число из конца строки — использовать вот такое выражение:
=ПРАВСИМВ( ячейка ;СУММ(ДЛСТР( ячейка ) — ДЛСТР(ПОДСТАВИТЬ( ячейка ; {«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))
Используя исходный текст в A2, вы записываете приведенную ниже формулу в B2 или любую другую пустую ячейку в той же строке, а затем копируете её вниз по столбцу:
=ПРАВСИМВ(A2;СУММ(ДЛСТР(A2) — ДЛСТР(ПОДСТАВИТЬ(A2; {«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))
Примечание. Эти формулы предназначены для случая, когда числа находятся только в конце текстовой строки. Если некоторые цифры также находятся в середине или в начале, то ничего не будет работать.
Этих недостатков не имеет третья формула, которая извлекает только последнее число в тексте, игнорируя все предыдущие:
=ПРАВСИМВ(A2; ДЛСТР(A2) — МАКС(ЕСЛИ(ЕЧИСЛО(ПСТР(A2; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2))); 1) *1)=ЛОЖЬ; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2))); 0)))
На скриншоте ниже вы видите результат ее работы.
Как видите, цифры в начале или в середине текста игнорируются. Также обратите внимание, что результатом, как и в предыдущих формулах, является число, записанное в виде текста. Как превратить его в нормальное число, мы уже рассмотрели выше в этой статье.
Примечание. Если вы используете Excel 2019 или более ранние версии, нужно использовать формулу массива, нажав при вводе комбинацию Ctrl+Shift+Enter
. Если у вас Office365, вводите как обычно, через Enter
.
Как извлечь число из начала текстовой строки
Если вы работаете со строками, в которых текст находится после числа, решение для извлечения числа будет аналогично описанному выше. С той только разницей, что вы используете функцию ЛЕВСИМВ для извлечения из левой части текста:
=ЛЕВСИМВ( ячейка ;СУММ(ДЛСТР( ячейка )-ДЛСТР(ПОДСТАВИТЬ( ячейка ;{«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))
Используя этот метод для A2, извлекаем число при помощи такого выражения:
=ЛЕВСИМВ(A2;СУММ(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;{«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))
Это решение работает для текстовых выражений, которые содержат числа только в начале. Если некоторые цифры также находятся в середине или в конце строки, формула не будет работать.
Если вы хотите извлечь только числа слева и игнорировать остальные, воспользуйтесь другой формулой:
=ЛЕВСИМВ(A2;ПОИСКПОЗ(ЛОЖЬ;ЕЧИСЛО(—ПСТР(A2;СТРОКА($1:$94);1));0)-1)
Или чуть модифицируем, чтобы ускорить расчеты:
=ЛЕВСИМВ(A2; ПОИСКПОЗ(ЛОЖЬ; ЕЧИСЛО(ПСТР(A2; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2)+1)); 1) *1); 0) -1)
Если у вас Excel 2019 и ниже, вводите ее как формулу массива, используя Ctrl+Shift+Enter
. В Office365 и выше можно вводить как обычно.
Примечание. Как и в случае с функцией ПРАВСИМВ, функция ЛЕВСИМВ также возвращает числовую подстроку, которая технически является текстом, а не числом.
Как получить число из любой позиции в тексте
Если ваша задача подразумевает извлечение числа из любого места строки, вы можете использовать следующую формулу:
=СУММПРОИЗВ(ПСТР(0&A2; НАИБОЛЬШИЙ(ИНДЕКС(ЕЧИСЛО(—ПСТР(A2; СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))); 1)) * СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))); 0); СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))))+1; 1) * 10^СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2)))/10)
Где A2 — исходная текстовая строка.
Для пояснения, как это работает, потребуется отдельная статья. Поэтому вы можете просто скопировать на свой рабочий лист, чтобы убедиться, что это действительно работает
Обратите внимание, что в этом случае в тексте могут находиться несколько чисел. Все они будут извлечены и объединены в единое целое.
Однако, изучив результаты, вы можете заметить один незначительный недостаток: если исходный текст в ячейке не содержит числа, формула возвращает ноль, как в строке 7 на скриншоте выше. Чтобы исправить это, вы можете заключить формулу в оператор ЕСЛИ, который проверит, содержит ли исходный текст какое-либо число. Если это так, формула извлекает это число, в противном случае возвращает пустую строку:
=ЕСЛИ(СУММ(ДЛСТР(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);»»)
В отличие от всех предыдущих примеров, результатом этих формул является число. Чтобы убедиться в этом, просто обратите внимание на выровненные по правому краю значения в столбце B и усеченные ведущие нули (например, 88 вместо 088).
Если число, которое вы хотите извлечь, ограничено какими-то знаками-разделителями, то можно использовать функцию ПСТР. Рассмотрим пример, как получить номер счета из текста платежа.
Мы будем искать позицию знака «№» и позицию следующего за ним первого пробела. То, что находится между ними, как раз и будет номером счёта:
=ПСТР(ПОДСТАВИТЬ(A2;» «;»»);НАЙТИ(«№»;ПОДСТАВИТЬ(A2;» «;»»))+1;НАЙТИ(» «;A2;НАЙТИ(«№»;A2;1))-НАЙТИ(«№»;A2;1)-1)
На скриншоте ниже вы видите, как это работает.
Вот еще один возможный вариант вынимания числа из текста. Необходимо извлечь первое встретившееся число из текста.
Используем формулу
=ПРОСМОТР(2^64;—ЛЕВСИМВ(ПСТР(A1&»_0″;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&»_0123456789″));15); {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}))
или заменяем список цифр функцией:
=ПРОСМОТР(2^64;—ЛЕВСИМВ(ПСТР(A1&»_0″;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&»_0123456789″));15); СТРОКА($A$1:$IV$16)))
Как видите, получаем только первое число, независимо от его расположения:
И еще один пример. Давайте попробуем достать все числа из текста, разграничив их каким-то разделителем. Например, дефисом “-“.
В этом случае придется использовать формулу массива:
{=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(СЦЕП(ЕСЛИ(ЕЧИСЛО(—ПСТР(A2;СТРОКА($1:$94);1));ПСТР(A2;СТРОКА($1:$94);1);» «)));» «;»-«)}
Мы нашли все числа в тексте, как вы видите на скриншоте ниже:
Откорректировав эту формулу, вы можете использовать любой другой разделитель.
Поскольку между ними есть разделители, то вы легко можете распределить эти числа в отдельные ячейки. Как это сделать — читайте в материале 8 способов разделить ячейку Excel на две или несколько.
Как выделить число из текста с помощью Ultimate Suite
Как вы только что видели, не существует простой и понятной формулы Excel для извлечения чисел из текстовой строки. Если у вас есть трудности с пониманием формул или их настройкой для ваших наборов данных, вам может понравиться этот простой способ получить число из текста в Excel.
С надстройкой Ultimate Suite, добавленной на вашу ленту Excel, вы можете быстро получить число из любой буквенно-цифровой строки:
- Перейдите на вкладку Ablebits Data > Text и нажмите Извлечь (Extract) :
- Выделите все ячейки с данными, которые нужно обработать.
- На панели инструмента «Извлечь (Extract)» установите переключатель «Извлечь числа (Extract numbers)».
- В зависимости от того, хотите ли вы, чтобы результаты были формулами или значениями, выберите поле «Вставить как формулу (Insert as formula)» или оставьте его пустым (по умолчанию).
Я советую активировать это поле, если вы хотите, чтобы извлеченные числа обновлялись автоматически, как только в исходные значения вносятся какие-либо изменения. Если нужно, чтобы результаты не зависели от будущих изменений (например, если вы планируете удалить исходные данные позже), не используйте эту опцию.
- Нажмите кнопку «Вставить результаты (Insert Results)». Готово!
Как и в предыдущем примере, результаты извлечения являются числами. Это означает, что вы можете подсчитывать, суммировать, усреднять или выполнять любые другие вычисления с ними.
Если установлен флажок «Вставить как формулу», вы увидите выражение в строке формул. Любопытно узнать, какое именно? Просто скачайте пробную версию Ultimate Suite и убедитесь сами
Если вы хотите иметь это, а также еще более 60 полезных инструментов в Excel, воспользуйтесь этой надстройкой.
Я постарался дать вам максимально полные рекомендации, какими способами можно извлечь число из текста. Конечно, они не могут охватить все возможные случаи. Поэтому если встретилось что-то особенно заковыристое — не стесняйтесь писать в комментариях. Постараюсь помочь по мере сил.
Хитрости »
1 Май 2011 398112 просмотров
Как оставить в ячейке только цифры или только текст?
Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 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)
Три важных момента:
- Формула вводится в ячейку сочетанием клавиш Ctrl+Shift+Enter, т.к. является формулой массива. Подробнее про эти формулы читайте в статье: Что такое формула массива
- в таком виде формула работает с текстом, количество символов в котором не превышает 99. Чтобы расширить необходимо в формуле во всех местах заменить СТРОКА($1:$99) на СТРОКА($1:$200). Т.е. вместо 99 указать количество символов с запасом. Только не увлекайтесь, иначе может получиться, что формула будет работать слишком долго
- формула не обработает корректно текст «Было доставлено кусков мыла 763шт., а заказывали 780» и ему подобный, где числа раскиданы по тексту.
Теперь коротко разберем формулу на примере фразы: Было доставлено кусков мыла 763шт.
- в A1 сам текст, из которого необходимо извлечь числа: Было доставлено кусков мыла 763шт., а заказывали 780
- блок: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)))
вычисляет позицию первой цифры в ячейке — 29 - блок: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99))
вычисляет позицию последней цифры в ячейке — 31 - в результате получается: =ПСТР(A1;29;31—29+1)
функция ПСТР извлекает из текста, указанного первым аргументом(A1) текст, начиная с указанной позиции(29) с количеством символов, указанным третьим аргументом(31—29+1) - И в итоге:
=ПСТР(A1;29;31—29+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) -создать стандартный модуль(Insert —Module) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(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 665 скачиваний)
Также см.:
Извлечение числа из текста
Что такое функция пользователя(UDF)?
Как получить адрес гиперссылки из ячейки
Оставить цифры или текст при помощи PowerQuery
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика