Как разобрать строку в excel


Часто текстовая строка может содержать несколько значений. Например, адрес компании: «г.Москва, ул.Тверская, д.13», т.е. название города, улицы и номер дома. Если необходимо определить все компании в определенном городе, то нужно «разобрать» адрес на несколько составляющих. Аналогичный подход потребуется, если необходимо разнести по столбцам Имя и фамилию, артикул товара или извлечь число или дату из текстовой строки.

Данная статья является сводной, т.е. в ней содержатся ссылки на другие статьи, в которых решены определенные задачи. Начнем с адресов.

Самый простейший случай, если адрес, состоящий из названия города, улицы и т.д., импортирован в ячейку MS EXCEL из другой информационной системы. В этом случае у адреса имеется определенная структура (если элементы адреса хранились в отдельных полях) и скорее всего нет (мало) опечаток. Разгадав структуру можно быстро разнести адрес по столбцам. Например, адрес

«г.Москва, ул.Тверская, д.13»

очевидно состоит из 3-х блоков: город, улица, дом, разделенных пробелами и запятыми. Кроме того, перед названием стоят сокращения г., ул., д. С такой задачей достаточно легко справится инструмент MS EXCEL

Текст по столбцам

. Как это сделать написано в статье

Текст-по-столбцам (мастер текстов) в MS EXCEL

.

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

Функция ЛЕВСИМВ() в MS EXCEL

— выводит нужное количество левых символов строки;

Функция ПРАВСИМВ() в MS EXCEL

— выводит нужное количество правых символов строки;

Функция ПСТР() в MS EXCEL

— выводит часть текста из середины строки.

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

Разнесение в MS EXCEL текстовых строк по столбцам

.

Еще раз отмечу, что перед использованием функций необходимо понять структуру текстовой строки, которую требуется разобрать. Например, извлечем номер дома из вышеуказанного адреса. Понятно, что потребуется использовать функцию ПРАВСИМВ(), но сколько символов извлечь? Два? А если в других адресах номер дома состоит из 1 или 3 цифр? В этом случае можно попытаться найти подстроку «д.», после которой идет номер дома. Это можно сделать с помощью

функции ПОИСК()

(см. статью

Нахождение в MS EXCEL позиции n-го вхождения символа в слове

). Далее нужно вычислить количество цифр номера дома. Это сделано в файле примера , ссылка на который внизу статьи.

Усложним ситуацию. Пусть подстрока «д.» может встречаться в адресе несколько раз, например, при указании названия

деревни

используется сокращение «д.», т.е. совпадает с префиксом номера дома. В этом случае нужно определить все строки, в которых имеется название деревень (первые 2 символа, т.к. это адрес населенного пункта) и исключить их. Также можно извлечь все цифры из строки в отдельный диапазон (см. статью

Извлекаем в MS EXCEL число из конца текстовой строки

). Но, что делать, если в названии улицы есть числа? Например, «26 Бакинских комиссаров». Короче, тут начинается творчество.

Не забудьте про пробелы! Каждый пробел — это отдельный символ. Часто при печати их ставят 2 или 3 подряд, а это совсем не то же самое, что один пробел. Используйте функцию

Функция СЖПРОБЕЛЫ() в MS EXCEL

, чтобы избавиться от лишних пробелов.


Об извлечении чисел из текстовой строки

см. здесь:

Извлекаем в MS EXCEL число из начала текстовой строки

или здесь

Извлекаем в MS EXCEL число из середины текстовой строки

.


Об извлечении названия файла из полного пути

см.

Извлечение имени файла в MS EXCEL

.


Про разбор фамилии

см.

Разделяем пробелами Фамилию, Имя и Отчество

.

Часто в русских текстовых строках попадаются

английские буквы

. Их также можно обнаружить и извлечь, см.

Есть ли в слове в MS EXCEL латинские буквы, цифры, ПРОПИСНЫЕ символы

.

Все статьи сайта, связанные с преобразованием текстовых строк собраны в этом разделе:

Изменение Текстовых Строк (значений)

.

Артикул товара

Пусть имеется перечень артикулов товара: 2-3657; 3-4897; …

Как видно, артикул состоит из 2-х числовых частей, разделенных дефисом. Причем, числовые части имеют строго заданный размер: первое число состоит из 1 цифры, второе — из 4-х.

Задача состоит в том, чтобы определить артикулы, у которых левый индекс <=2 и вывести для них правый индекс.

Первая часть задачи решается формулой =—ЛЕВСИМВ(A16;1)<=2 или =ЗНАЧЕН(ЛЕВСИМВ(A16;НАЙТИ(«-«;A16;1)-1))<=2 . Вторая формула понадобится, если длина первого индекса не обязательна равна 1 (см. файл примера ).

Вторая часть задачи решается формулой =ЗНАЧЕН(ПРАВСИМВ(A16;4)) .

Зачем нам потребовалась функция ЗНАЧЕН() ? Дело в том, что текстовые функции, такие ка ПРАВСИМВ() , возвращают текст, а не число (т.е. в нашем случае число в текстовом формате). Для того, чтобы применить к таким числам в текстовом формате операцию сравнения с другим числом, т.е. <=2, потребуется сначала

преобразовать текстовый формат в числовой формат

. Самый простой для этого способ — использовать функцию ЗНАЧЕН() или попытаться применить к нему арифметическую операцию, например, двойное вычитание — или *1 или +0.

ВНИМАНИЕ!

Если у Вас есть примеры или вопросы, связанные с разбором текстовых строк — смело пишите в комментариях к этой статье или в группу

]]>
https://vk.com/excel2ru

]]> ! Я дополню эту статью самыми интересными из них.

На чтение 23 мин. Просмотров 18.6k.

VBA String Functions

Содержание

  1. Краткое руководство по текстовым функциям
  2. Введение
  3. Прочитайте это в первую очередь!
  4. Добавление строк
  5. Извлечение части строки
  6. Поиск в строке
  7. Удаление пробелов
  8. Длина строки
  9. Перевернуть текст
  10. Сравнение
  11. Сравнение строк с использованием сопоставления с шаблоном
  12. Заменить часть строки
  13. Преобразовать типы в строку (базовый)
  14. Преобразовать строку в число — CLng, CDbl, Val и т.д.
  15. Генерация строки элементов — функция строки
  16. Преобразовать регистр / юникод — StrConv, UCase, LCase
  17. Использование строк с массивами
  18. Форматирование строки
  19. Заключение

Краткое руководство по текстовым функциям

Текстовые операции Функции
Добавить две или более строки Format or «&»
Построить текст из массива Join
Сравнить StrComp or «=»
Сравнить — шаблон Like
Преобразовать в текст CStr, Str
Конвертировать текст в дату Просто: CDate 
Дополнительно: Format
Преобразовать текст в число Просто: CLng, CInt, CDbl, Val
Дополнительно: Format
Конвертировать в юникод, широкий, узкий StrConv
Преобразовать в верхний / нижний регистр StrConv, UCase, LCase
Извлечь часть текста Left, Right, Mid
Форматировать текст Format
Найти символы в тексте InStr, InStrRev
Генерация текста String
Получить длину строки Len
Удалить пробелы LTrim, RTrim, Trim
Заменить часть строки Replace
Перевернуть строку StrReverse
Разобрать строку в массив Split

Введение

Использование строк является очень важной частью VBA. Есть много типов манипуляций, которые вы можете делать со строками. К ним относятся такие задачи, как:

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

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

Эта статья содержит подробное руководство по использованию строки в VBA. Он объясняет строки в простых терминах с понятными примерами кода. Изложение в статье поможет легко использовать ее в качестве краткого справочного руководства.

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

Прочитайте это в первую очередь!

Следующие два пункта очень важны при работе со строковыми функциями VBA.

Исходная строка не изменяется

Важно помнить, что строковые функции VBA не изменяют исходную строку. Они возвращают новую строку с изменениями, внесенными функцией. Если вы хотите изменить исходную строку, вы просто назначаете результат исходной строке. См. Раздел «Извлечение части строки» для примеров.

Как использовать Compare

Некоторые строковые функции, такие как StrComp (), Instr () и т.д. имеют необязательный параметр Compare. Он работает следующим образом:

vbTextCompare: верхний и нижний регистры считаются одинаковыми

vbBinaryCompare: верхний и нижний регистр считаются разными

Следующий код использует функцию сравнения строк StrComp () для демонстрации параметра Compare.

Sub Comp1()

    ' Печатает 0  : Строки совпадают
    Debug.Print StrComp("АБВ", "абв", vbTextCompare)
    ' Печатает -1 : Строки не совпадают
    Debug.Print StrComp("АБВ", "абв", vbBinaryCompare)

End Sub

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

  • Oпция Compare Text: делает vbTextCompare аргументом сравнения по умолчанию
Option Compare Text

Sub Comp2()
    ' Соответствие строк - использует vbCompareText в качестве 'аргумента сравнения
    Debug.Print StrComp("АБВ", "абв")
    Debug.Print StrComp("ГДЕ", "где")
End Sub
  • Опция Compare Binary: делает vbBinaryCompare аргументом сравнения по умолчанию.
Option Compare Binary

Sub Comp2()
    ' Строки не совпадают - использует vbCompareBinary в качестве 'аргумента сравнения
    Debug.Print StrComp("АБВ", "абв")
    Debug.Print StrComp("ГДЕ", "где")
End Sub

Если Option Compare не используется, то по умолчанию используется Option Compare Binary.

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

Добавление строк

VBA String Functions - Smaller

Вы можете добавлять строки, используя оператор &. Следующий код показывает несколько примеров его использования.

Sub Dobavlenie()

    Debug.Print "АБВ" & "ГДЕ"
    Debug.Print "Иван" & " " & "Петров"
    Debug.Print "Длинный " & 22
    Debug.Print "Двойной " & 14.99
    Debug.Print "Дата " & #12/12/2015#

End Sub

В примере вы можете видеть, что различные типы, такие как даты и числа, автоматически преобразуются в строки. Вы можете увидеть оператор +, используемый для добавления строк. Разница в том, что этот оператор будет работать только со строковыми типами. Если вы попытаетесь использовать его с другим типом, вы получите ошибку.

 Это даст сообщение об ошибке: «Несоответствие типов»
    Debug.Print "Длинный " + 22

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

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

Функции, обсуждаемые в этом разделе, полезны при базовом извлечении из строки. Для чего-то более сложного можете посмотреть раздел, как легко извлечь любую строку без использования VBA InStr.

Функция Параметры Описание Пример
Left строка, длина Вернуть
символы с
левой стороны
Left(«Иван
Петров»,4)
Right строка, длина Вернуть
символы с
правой
стороны
Right(«Иван
Петров»,5)
Mid строка, начало, длина Вернуть
символы из
середины
Mid(«Иван
Петров»,3,2)

Функции Left, Right и Mid используются для извлечения частей строки. Это очень простые в использовании функции. Left читает символы слева, Right справа и Mid от указанной вами начальной точки.

Sub IspLeftRightMid()

    Dim sCustomer As String
    sCustomer = "Иван Васильевич Петров"

    Debug.Print Left(sCustomer, 4)  '  Печатает: Иван
    Debug.Print Right(sCustomer, 6) '  Печатает: Петров

    Debug.Print Left(sCustomer, 15)  '  Печатает: Иван Васильевич
    Debug.Print Right(sCustomer, 17)  '  Печатает: Васильевич Петров

    Debug.Print Mid(sCustomer, 1, 4) ' Печатает: Иван
    Debug.Print Mid(sCustomer, 6, 10) ' Печатает: Васильевич
    Debug.Print Mid(sCustomer, 17, 6) ' Печатает: Петров

End Sub

Как упоминалось в предыдущем разделе, строковые функции VBA не изменяют исходную строку. Вместо этого они возвращают результат в виде новой строки.

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

Sub PrimerIspolzovaniyaLeft()

    Dim Fullname As String
    Fullname = "Иван Петров"

    Debug.Print "Имя: "; Left(Fullname, 4)
    ' Исходная строка не изменилась
    Debug.Print "Полное имя: "; Fullname

 End Sub

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

Sub IzmenenieStroki()

    Dim name As String
    name = "Иван Петров"

    ' Присвойте возвращаемую строку переменной имени
    name = Left(name, 4)

    Debug.Print "Имя: "; name

 End Sub

Поиск в строке

Функция Параметры Описание Пример
InStr Текст1,
текст2
Находит
положение
текста
InStr(«Иван
Петров»,»в»)
InStrRev Проверка
текста,
соответствие
текста
Находит
позицию
текста с конца
InStrRev(«Иван Петров»,»в»)

InStr и InStrRev — это функции VBA, используемые для поиска текста в тексте. Если текст поиска найден, возвращается позиция (с начала строки проверки) текста поиска. Когда текст поиска не найден, возвращается ноль. Если какой-либо текст имеет значение null, возвращается значение null.

InStr Описание параметров

InStr() Start[Необязат], String1, String2, Compare[Необязат]

  • Start [Необязательно — по умолчанию 1]: это число, указывающее начальную позицию поиска слева
  • String1: текст, в котором будем искать
  • String2: текст, который будем искать
  • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

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

InStr возвращает первую позицию в тексте, где найден данный текст. Ниже приведены некоторые примеры его использования.

Sub PoiskTeksta()

    Dim name As String
    name = "Иван Петров"

    ' Возвращает 3 - позицию от первой 
    Debug.Print InStr(name, "а")
    ' Возвращает 10 - позиция первого "а", начиная с позиции 4
    Debug.Print InStr(4, name, "а")
    ' Возвращает 8
    Debug.Print InStr(name, "тр")
    ' Возвращает 6
    Debug.Print InStr(name, "Петров")
    ' Возвращает 0 - текст "ССС" не найдет
    Debug.Print InStr(name, "ССС")

End Sub

InStrRev Описание параметров

InStrRev() StringCheck, StringMatch, Start[Необязат], Compare[Необязат]

  • StringCheck: текст, в котором будем искать
  • StringMatch: Текст, который будем искать
  • Start [Необязательно — по умолчанию -1]: это число, указывающее начальную позицию поиска справа
  • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

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

Функция InStrRev такая же, как InStr, за исключением того, что она ищет с конца строки. Важно отметить, что возвращаемая позиция является позицией с самого начала. Поэтому, если существует только один экземпляр элемента поиска, InStr () и InStrRev () будут возвращать одно и то же значение.

В следующем коде показаны некоторые примеры использования InStrRev.

Sub IspInstrRev()

    Dim name As String
    name = "Иван Петров"

    ' Обе возвращают 1 - позицию, только И
    Debug.Print InStr(name, "И")
    Debug.Print InStrRev(name, "И")

    ' Возвращает 11 - вторую в
    Debug.Print InStrRev(name, "в")
    ' Возвращает 3 - первую в с позиции 9
    Debug.Print InStrRev(name, "в", 9)

    ' Returns 1
    Debug.Print InStrRev(name, "Иван")

End Sub

Функции InStr и InStrRev полезны при работе с базовым поиском текста. Однако, если вы собираетесь использовать их для извлечения текста из строки, они могут усложнить задачу. Я написал о гораздо лучшем способе сделать это в своей статье Как легко извлечь любой текст без использования VBA InStr.

Удаление пробелов

Функция Параметры Описание Пример
LTrim Текст Убирает
пробелы слева
LTrim(» Иван «)
RTrim Текст Убирает
пробелы
справа
RTrim(» Иван «)
Trim Текст Убирает
пробелы слева и справа
Trim(» Иван «)

Функции Trim — это простые функции, которые удаляют пробелы в начале или конце строки.

Функции и примеры использования триммера Trim

  • LTrim удаляет пробелы слева от строки
  • RTrim удаляет пробелы справа от строки
  • Trim удаляет пробелы слева и справа от строки
Sub TrimStr()

    Dim name As String
    name = "  Иван Петров  "

    ' Печатает "Иван Петров  "
    Debug.Print LTrim(name)
    ' Печатает "  Иван Петров"
    Debug.Print RTrim(name)
    ' Печатает "Иван Петров"
    Debug.Print Trim(name)

End Sub

Длина строки

Функция Параметры Описание Пример
Len Текст Возвращает
длину строки
Len («Иван Петров»)

Len — простая функция при использовании со строкой. Она просто возвращает количество символов, которое содержит строка. Если используется с числовым типом, таким как long, он вернет количество байтов.

Sub IspLen()

    Dim name As String
    name = "Иван Петров"

    ' Печатает 11
    Debug.Print Len("Иван Петров")
    ' Печатает 3
    Debug.Print Len("АБВ")

    ' Печатает 4 с Long - это размер 4 байта
    Dim total As Long
    Debug.Print Len(total)

End Sub

Перевернуть текст

Функция Параметры Описание Пример
StrReverse Текст Перевернуть
текст
StrReverse
(«Иван
Петров»)

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

Sub RevStr()

    Dim s As String
    s = "Иван Петров"
    ' Печатает: вортеП навИ
    Debug.Print StrReverse(s)

End Sub

Сравнение

Функция Параметры Описание Пример
StrComp Текст1, текст2 Сравнивает 2
текста
StrComp
(«Иван»,
«Иван»)

Функция StrComp используется для сравнения двух строк. Следующие подразделы описывают, как используется.

Описание параметров

StrComp()  String1, String2, Compare[Необязат]

  • String1: первая строка для сравнения
  • String2: вторая строка для сравнения
  • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

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

Возвращаемое значение Описание
0 Совпадение строк
-1 строка1 меньше строки2
1 строка1 больше строки2
Null если какая-либо строка равна нулю

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

Ниже приведены некоторые примеры использования функции StrComp.

Sub IspStrComp()

   ' Возвращает  0
   Debug.Print StrComp("АБВ", "АБВ", vbTextCompare)
   ' Возвращает 1
   Debug.Print StrComp("АБВГ", "АБВ", vbTextCompare)
   ' Возвращает -1
   Debug.Print StrComp("АБВ", "АБВГ", vbTextCompare)
   ' Returns Null
   Debug.Print StrComp(Null, "АБВГ", vbTextCompare)

End Sub

Сравнение строк с использованием операторов

Вы также можете использовать знак равенства для сравнения строк. Разница между сравнением equals и функцией StrComp:

  1. Знак равенства возвращает только true или false.
  2. Вы не можете указать параметр Compare, используя знак равенства — он использует настройку «Option Compare».  

Ниже приведены некоторые примеры использования equals для сравнения строк.

Option Compare Text

Sub CompareIspEquals()

    ' Возвращает true
    Debug.Print "АБВ" = "АБВ"
    ' Возвращает true, потому что «Сравнить текст» установлен выше
    Debug.Print "АБВ" = "абв"
    ' Возвращает false
    Debug.Print "АБВГ" = "АБВ"
    ' Возвращает false
    Debug.Print "АБВ" = "АБВГ"
    ' Возвращает null
    Debug.Print Null = "АБВГ"

End Sub

Сравнение строк с использованием сопоставления с шаблоном

Функция Параметры Описание Пример
Like Текст, шаблон проверяет, имеет
ли строка
заданный
шаблон
«abX» Like «??X»
«54abc5» Like «*abc#»
Знак Значение
? Любой одиночный символ
# Любая однозначная цифра (0-9)
* Ноль или более символов
[charlist] Любой символ в списке
[!charlist] Любой символ не в списке символов

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

Если строка соответствует шаблону, возвращаемое значение равно true, в противном случае — false.

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

Давайте посмотрим на базовый пример с использованием знаков. Возьмите следующую строку шаблона.

[abc][!def]?#X*

 Давайте посмотрим, как работает эта строка

[abc] — символ, который является или a, b или c
[! def] — символ, который не является d, e или f
? любой символ
# — любая цифра
X — символ X
* следуют ноль или более символов

 Поэтому следующая строка действительна
apY6X

а — один из символов a,b,c
p — не один из символов d, e или f
Y — любой символ
6 — это цифра
Х — это буква Х

В следующих примерах кода показаны результаты различных строк с этим шаблоном.

Sub Shabloni()

    ' ИСТИНА
    Debug.Print 1; "apY6X" Like "[abc][!def]?#X*"
    ' ИСТИНА - любая комбинация символов после x действительна
    Debug.Print 2; "apY6Xsf34FAD" Like "[abc][!def]?#X*"
    ' ЛОЖЬ - символ не из[abc]
    Debug.Print 3; "dpY6X" Like "[abc][!def]?#X*"
    ' ЛОЖЬ - 2-й символ e находится в [def]
    Debug.Print 4; "aeY6X" Like "[abc][!def]?#X*"
    ' ЛОЖЬ - A в позиции 4 не является цифрой
    Debug.Print 5; "apYAX" Like "[abc][!def]?#X*"
    ' ЛОЖЬ - символ в позиции 5 должен быть X
    Debug.Print 1; "apY6Z" Like "[abc][!def]?#X*"

End Sub

Реальный пример сопоставления с образцом

Чтобы увидеть реальный пример использования сопоставления с образцом, ознакомьтесь с Примером 3: Проверьте, допустимо ли имя файла.

Важное примечание о сопоставлении с образцом VBA

Оператор Like использует двоичное или текстовое сравнение на основе параметра Option Compare. Пожалуйста, смотрите раздел Сравнение для более подробной информации.

Заменить часть строки

Функция Параметры Описание Пример
Replace строка, найти, заменить,
начать,
считать,
сравнивать
Заменяет текст Replace
(«Ива»,»а»,»ан»)

Replace используется для замены текста в строке другим текстом. Он заменяет все экземпляры текста, найденные по умолчанию.

Replace описание параметров

Replace()  Expression, Find, Replace, Start[Необязат], Count[Необязат], Compare[Необязат]

  • Expression: текст, в котором нужна замена символов
  • Find: текст для замены в строке выражения
  • Replace: строка для поиска замены текста поиска
  • Start [Необязательно — по умолчанию 1]: начальная позиция в строке
  • Count [Необязательно — по умолчанию -1]: количество замен. По умолчанию -1 означает все.
  • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

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

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

Sub PrimeriReplace()

    ' Заменяет все знаки вопроса (?) на точку с запятой (;)
    Debug.Print Replace("A?B?C?D?E", "?", ";")
    ' Заменить Петров на Иванов
    Debug.Print Replace("Евгений Петров,Артем Петров", "Петров", "Иванов")
    ' Заменить AX на AB
    Debug.Print Replace("ACD AXC BAX", "AX", "AB")

End Sub

На выходе:

A;B;C;D;E
Евгений Иванов,Артем Иванов
ACD ABC BAB

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

Sub ReplaceCount()

    ' Заменяет только первый знак вопроса
    Debug.Print Replace("A?B?C?D?E", "?", ";", Count:=1)
    ' Заменяет первые три знака вопроса
    Debug.Print Replace("A?B?C?D?E", "?", ";", Count:=3)

End Sub

На выходе:

A;B?C?D?E
A;B;C;D?E

Необязательный параметр Start позволяет вам вернуть часть строки. Позиция, которую вы указываете с помощью Start, — это место, откуда начинается возврат строки. Он не вернет ни одной части строки до этой позиции, независимо от того, была ли произведена замена или нет.

Sub ReplacePartial()

    ' Использовать оригинальную строку из позиции 4
    Debug.Print Replace("A?B?C?D?E", "?", ";", Start:=4)
    ' Используйте оригинальную строку из позиции 8
    Debug.Print Replace("AA?B?C?D?E", "?", ";", Start:=8)
    ' Элемент не заменен, но по-прежнему возвращаются только последние '2 символа
    Debug.Print Replace("ABCD", "X", "Y", Start:=3)

End Sub

На выходе:

;C;D;E
;E
CD

Иногда вы можете заменить только заглавные или строчные буквы. Вы можете использовать параметр Compare для этого. Он используется во многих строковых функциях. Для получения дополнительной информации об этом проверьте раздел сравнения.

Sub ReplaceCase()

    ' Заменить только заглавные А
    Debug.Print Replace("AaAa", "A", "X", Compare:=vbBinaryCompare)
    ' Заменить все А
    Debug.Print Replace("AaAa", "A", "X", Compare:=vbTextCompare)

End Sub

На выходе:

XaXa
XXXX

Многократные замены

Если вы хотите заменить несколько значений в строке, вы можете вкладывать вызовы. В следующем коде мы хотим заменить X и Y на A и B соответственно.

Sub ReplaceMulti()

    Dim newString As String

    ' Заменить А на Х
    newString = Replace("ABCD ABDN", "A", "X")
    ' Теперь замените B на Y в новой строке
    newString = Replace(newString, "B", "Y")

    Debug.Print newString

End Sub

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

Sub ReplaceMultiNested()

    Dim newString As String

    ' Заменить A на X, а B на Y
    newString = Replace(Replace("ABCD ABDN", "A", "X"), "B", "Y")

    Debug.Print newString

End Sub

Результатом обоих этих Subs является:
XYCD XYDN

Преобразовать типы в строку (базовый)

Этот раздел о преобразовании чисел в строку. Очень важным моментом здесь является то, что в большинстве случаев VBA автоматически конвертируется в строку для вас. Давайте посмотрим на некоторые примеры:

Sub AutoConverts()

    Dim s As String
    ' Автоматически преобразует число в строку
    s = 12.99
    Debug.Print s

    ' Автоматически преобразует несколько чисел в строку
    s = "ABC" & 6 & 12.99
    Debug.Print s

    ' Автоматически преобразует двойную переменную в строку
    Dim d As Double, l As Long
    d = 19.99
    l = 55
    s = "Значения: " & d & " " & l
    Debug.Print s

End Sub

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

Явное преобразование

Функция Параметры Описание Пример
CStr выражение Преобразует
числовую
переменную
в строку
CStr («45.78»)
Str число Преобразует
числовую
переменную
в строку
Str («45.78»)

В некоторых случаях вы можете захотеть преобразовать элемент в строку без необходимости сначала помещать его в строковую переменную. В этом случае вы можете использовать функции Str или CStr. Оба принимают выражение как функцию, и это может быть любой тип, например long, double, data или boolean.

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

Sub IspStr()

    Dim coll As New Collection
    Dim c As Range

    ' Считать значения ячеек в коллекцию
    For Each c In Range("A1:A10")
        ' Используйте Str для преобразования значения ячейки в строку
        coll.Add Str(c)
    Next

    ' Распечатайте значения и тип коллекции
    Dim i As Variant
    For Each i In coll
        Debug.Print i, TypeName(i)
    Next

End Sub

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

Multi Region

Разница между функциями Str и CStr заключается в том, что CStr преобразует в зависимости от региона. Если ваши макросы будут использоваться в нескольких регионах, вам нужно будет использовать CStr для преобразования строк.

Хорошей практикой является использование CStr при чтении значений из ячеек. Если ваш код в конечном итоге используется в другом регионе, вам не нужно вносить какие-либо изменения, чтобы он работал правильно.

Преобразовать строку в число — CLng, CDbl, Val и т.д.

Функция Возвращает Пример
CBool Boolean CBool(«True»), CBool(«0»)
CCur Currency CCur(«245.567»)
CDate Date CDate(«1/1/2019»)
CDbl Double CDbl(«245.567»)
CDec Decimal CDec(«245.567»)
CInt Integer CInt(«45»)
CLng Long Integer CLng(«45.78»)
CVar Variant CVar(«»)

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

Sub StrToNumeric()

    Dim l As Long, d As Double, c As Currency
    Dim s As String
    s = "45.923239"

    l = s
    d = s
    c = s

    Debug.Print "Long is "; l
    Debug.Print "Double is "; d
    Debug.Print "Currency is "; c

End Sub

Использование типов преобразования дает большую гибкость. Это означает, что вы можете определить тип во время выполнения. В следующем коде мы устанавливаем тип на основе аргумента sType, передаваемого в функцию PrintValue. Поскольку этот тип может быть прочитан из внешнего источника, такого как ячейка, мы можем установить тип во время выполнения. Если мы объявим переменную как Long, то при выполнении кода она всегда будет длинной.

Sub Test()
    ' Печатает  46
    PrintValue "45.56", "Long"
    ' Печатает 45.56
    PrintValue "45.56", ""
End Sub

Sub PrintValue(ByVal s As String, ByVal sType As String)

    Dim value

    ' Установите тип данных на основе строки типа
    If sType = "Long" Then
        value = CLng(s)
    Else
        value = CDbl(s)
    End If
    Debug.Print "Type is "; TypeName(value); value

End Sub

Если строка не является допустимым числом (т.е. Содержит символы, другие цифры), вы получаете ошибку «Несоответствие типов».

Sub InvalidNumber()

    Dim l As Long

    ' Даст ошибку несоответствия типов
    l = CLng("45A")

End Sub

Функция Val

Функция преобразует числовые части строки в правильный тип числа.

Val преобразует первые встреченные числа. Как только он встречает буквы в строке, он останавливается. Если есть только буквы, то в качестве значения возвращается ноль. Следующий код показывает некоторые примеры использования Val

Sub IspVal()

    ' Печатает 45
    Debug.Print Val("45 Новая улица")

    ' Печатает 45
    Debug.Print Val("    45 Новая улица")

    ' Печатает 0
    Debug.Print Val("Новая улица 45")

    ' Печатает 12
    Debug.Print Val("12 f 34")

End Sub

Val имеет два недостатка

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

Генерация строки элементов — функция строки

Функция Параметры Описание Пример
String число, символ Преобразует
числовую
переменную
в строку
String (5,»*»)

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

Sub IspString()

    ' Печатает: AAAAA
    Debug.Print String(5, "A")
    ' Печатает: >>>>>
    Debug.Print String(5, 62)
    ' Печатает: (((ABC)))
    Debug.Print String(3, "(") & "ABC" & String(3, ")")

End Sub

Преобразовать регистр / юникод — StrConv, UCase, LCase

Функция Параметры Описание Пример
StrConv строка,
преобразование, LCID
Преобразует
строку
StrConv(«abc»,vbUpperCase)

Если вы хотите преобразовать регистр строки в верхний или нижний регистр, вы можете использовать функции UCase и LCase для верхнего и нижнего соответственно. Вы также можете использовать функцию StrConv с аргументом vbUpperCase или vbLowerCase. В следующем коде показан пример использования этих трех функций.

Sub ConvCase()

    Dim s As String
    s = "У Мэри был маленький ягненок"

    ' верхний
    Debug.Print UCase(s)
    Debug.Print StrConv(s, vbUpperCase)

    ' нижний
    Debug.Print LCase(s)
    Debug.Print StrConv(s, vbLowerCase)

    ' Устанавливает первую букву каждого слова в верхний регистр
    Debug.Print StrConv(s, vbProperCase)

End Sub

На выходе: 

У МЭРИ БЫЛ МАЛЕНЬКИЙ ЯГНЕНОК
У МЭРИ БЫЛ МАЛЕНЬКИЙ ЯГНЕНОК
у мэри был маленький ягненок
у мэри был маленький ягненок
У Мэри Был Маленький Ягненок

Другие преобразования

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

Постоянные Преобразует Значение
vbUpperCase 1 в верхний регистр
vbLowerCase 2 в нижнем регистре
vbProperCase 3 первая буква
каждого слова в
верхнем регистре
vbWide* 4 от узкого к
широкому
vbNarrow* 8 от широкого к
узкому
vbKatakana** 16 из Хираганы в
Катакану
vbHiragana 32 из Катаканы в
Хирагану
vbUnicode 64 в юникод
vbFromUnicode 128 из юникода

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

Функция Параметры Описание Пример
Split выражение,
разделитель,
ограничить,
сравнить
Разбирает
разделенную
строку в
массив
arr = Split(«A;B;C»,»;»)
Join исходный
массив,
разделитель
Преобразует
одномерный
массив в
строку
s = Join(Arr, «;»)

Строка в массив с использованием Split

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

Sub StrToArr()

    Dim arr() As String
    ' Разобрать строку в массив
    arr = Split("Иван,Анна,Павел,София", ",")

    Dim name As Variant
    For Each name In arr
        Debug.Print name
    Next

End Sub

На выходе:

Иван
Анна
Павел
София

Если вы хотите увидеть некоторые реальные примеры использования Split, вы найдете их в статье Как легко извлечь любую строку без использования VBA InStr.

Массив в строку, используя Join

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

Sub ArrToStr()

    Dim Arr(0 To 3) As String
    Arr(0) = "Иван"
    Arr(1) = "Анна"
    Arr(2) = "Павел"
    Arr(3) = "София"

    ' Построить строку из массива
    Dim sNames As String
    sNames = Join(Arr, ",")

    Debug.Print sNames

End Sub

На выходе:

Иван, Анна, Павел, София

Форматирование строки

Функция Параметры Описание Пример
Format выражение,
формат,
firstdayofweek,
firstweekofyear
Форматирует
строку
Format(0.5, «0.00%»)

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

Sub FormatDate()

    Dim s As String
    s = "31/12/2019 10:15:45"

    ' Печатает: 31 12 19
    Debug.Print Format(s, "DD MM YY")
    ' Печатает: Thu 31 Dec 2019
    Debug.Print Format(s, "DDD DD MMM YYYY")
    ' Печатает: Thursday 31 December 2019
    Debug.Print Format(s, "DDDD DD MMMM YYYY")
    ' Печатает: 10:15
    Debug.Print Format(s, "HH:MM")
    ' Печатает: 10:15:45 AM
    Debug.Print Format(s, "HH:MM:SS AM/PM")

End Sub

В следующих примерах представлены некоторые распространенные способы форматирования чисел.

Sub FormatNumbers()

    ' Печатает: 50.00%
    Debug.Print Format(0.5, "0.00%")
    ' Печатает: 023.45
    Debug.Print Format(23.45, "00#.00")
    ' Печатает: 23,000
    Debug.Print Format(23000, "##,000")
    ' Печатает: 023,000
    Debug.Print Format(23000, "0##,000")
    ' Печатает: $23.99
    Debug.Print Format(23.99, "$#0.00")

End Sub

Функция «Формат» — довольно обширная тема, и она может самостоятельно занять всю статью. Если вы хотите получить больше информации, то страница формата MSDN предоставляет много информации.

Полезный совет по использованию формата

Быстрый способ выяснить используемое форматирование — использовать форматирование ячеек на листе Excel. Например, добавьте число в ячейку. Затем щелкните правой кнопкой мыши и отформатируйте ячейку так, как вам нужно. Если вы довольны форматом, выберите «Пользовательский» в списке категорий слева. При выборе этого вы можете увидеть строку формата в текстовом поле типа. Это формат строки, который вы можете использовать в VBA.

VBA Format Function

Заключение

Практически в любом типе программирования вы потратите много времени на манипулирование строками. В этой статье рассматриваются различные способы использования строк в VBA.

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

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

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

Добрый день, Уважаемые спецы
Прошу Вашей помощи, ибо сам не могу найти решение.
Задача, вариант 1

— Имеем: Название товара, колонка «Наименование»
— могут быть ошибки, лишние пробелы;
— одно и тоже наименование, в разные периоды (месяцы), может немного отличатся от предыдущего (дописано слово), но это все тот же товар;
— уникальный IDнаименования не предусмотрен.
— Задача: взять наименование > разбить его на отдельные слова (метки) > поместить в соответствующие ячейки, группа колонок «Метки»
— Мысль: парсить наименование и раскладывать по ячейкам, с помощью функции excel(такая есть?), опираясь на заранее подготовленный список возможных вариантов (на другом листе или в другом файле), где каждая колонка вариантов соответствует колонке с метками.

 Задача, вариант 2

— Имеем: все то же самое. Но метки не использовать, а:

— Задача: парсить «как бы, как-то» на лету, при формировании сводной таблицы. И сводную формировать уже из нужных значений.

Файл данными прикрепил.

Прикрепленные файлы

  • тест_1.xls (38.5 КБ)

 
 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

Михаил,

Благодарю, это то что надо. Немного переделал: добавил именованный диапазон и убрал ЛЕВСИМВ. Получилась такая конструкция: ПРОСМОТР(99;ПОИСК(NameType;A3);NameType)

Не могу понять, что означает 99 в ПРОСМОТР — Искомое значение?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Не формулист)) Но, вроде, то, что мы заведомо не найдём :)

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

ну я тоже так предположил)) но вот ввожу текстовую абракадабру и выдает ошибку Н/Д…

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

если текстовую — то 99 нужно заменить на «яяя»
пс. тоже не формулист :)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

=ПРОСМОТР(«яяя»;ПОИСК(NameType;A3);NameType)
выдает ошибку #Н/Д

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

тогда формулисты нужны.
ну, или пока они спят — Ваш файл с этой формулой.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

и не важно что пишу, на латинице или кириллице

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

не понял проблему
если формулу из B4 скопировать в B3 — всё работает

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

правильно, потому что:

в В4 999999   =ПРОСМОТР(999999;ПОИСК(NameType;A4);NameType)
а в В3 «яяя»   =ПРОСМОТР(«яяя»;ПОИСК(NameType;A3);NameType)

поэтому и хочу понять, почему с цифрами работает, а с текстом — нет.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

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

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

gling

Пользователь

Сообщений: 4024
Регистрация: 01.01.1970

А зачем Вы ищите текст? Вы его не найдете в массиве который создается функцией ПОИСК.В вашем варианте в массиве есть цифра 7  и 1 это никак не текст. Поэтому результат ошибка. Посмотрите пошаговое вычисление и сами увидите.

Изменено: gling16.03.2015 01:13:19

 

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

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

ikki,
перечитал все что написано выше, не нашел где я писал что формула не правильная? То что дал Михаил — все работает.

Вопрос был в том, почему цифры, а не буквы в функции ПРОСМОТР? и далее, почему дает ошибку, если прописать буквы?

как-то так.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#16

16.03.2015 01:20:44

Цитата
Max Human написал:
вот ввожу текстовую абракадабру и выдает ошибку Н/Д…

достаточно?

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

Михаил, gling

Спасибо, разобрался :)

 

Max Human

Пользователь

Сообщений: 30
Регистрация: 26.05.2014

ну так все верно, — это же я ввожу :) я лично, своими руками…
достаточно, благодарю.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

ну я же не вижу, куда Вы вводите :)

хорошо, что разобрались ;)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Михаил С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#20

16.03.2015 01:42:45

Учитывая, из #1

Цитата
Max Human написал:
— могут быть ошибки, лишние пробелы;

ваши метки сработают не всегда. Именно поэтому я ввел ЛЕВСИМВ()
В вашем же первом примере есть «Брюка STRELKA Norma series для женщин».
Поэтому, имхо, нужно использовать немного другой вариант.
Зы. Здесь 2 потому, что ПОИСПОЗ вернет либо Н/Д, либо 1

Прикрепленные файлы

  • тест_1 Max Human(2).xls (26.5 КБ)

Разбор текстовых строк в MS EXCEL

​Смотрите также​ случайно что-то нажали,​ даже не сможете​ поле можно:​проверка значений, свойств и​ на его место.​ которого требуется вставить​ мы подробно рассмотрим,​ совпадения во втором​ позволяет извлекать от​ ячейку (см. файл​ и выглядит так:​ — это важно​ связанные с разбором​Об извлечении названия файла​ вхождения символа в​ в статье Текст-по-столбцам (мастер​Часто текстовая строка может​ и это привело​

​ «препятствовать» автоматическому процессу​вводить цифры и текст​ характеристик.​ В нашем примере​ новый. Например, если​ как добавлять строки​ столбце. Далее, значения​

​ 2-х до 4-х​ примера, лист Общий​=1*ПСТР(A1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(1*ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1));0);СЧЁТ(1*ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1)))​ при копировании формулы.​ текстовых строк -​ из полного пути​ слове). Далее нужно​ текстов) в MS​ содержать несколько значений.​ к исчезновению строки.​ замены адресов ссылок​ с клавиатуры;​Все эти функции возможны​ столбец F теперь​ необходимо вставить новый​ и столбцы на​ попарно перемножаются (при​ чисел из текстовых​ случай) для этого:​О построении этой формулы​При необходимости можно подсчитать​ смело пишите в​см. Извлечение имени файла​ вычислить количество цифр​ EXCEL.​ Например, адрес компании:​ Чтобы ее вернуть​ в скопированных формулах.​указывать ссылки на диапазоны​ легко отслеживать в​ является столбцом E.​ столбец между столбцами​ рабочий лист, а​

​ этом ЛОЖЬ преобразуется​ строк длиной до​подсчитайте количество букв в​ смотрите . Это​ суммарные продажи за​ комментариях к этой​ в MS EXCEL.​ номера дома. Это​Очевидно, что не всегда​ «г.Москва, ул.Тверская, д.13»,​

​ и продолжить работу​ Это и есть​ ячеек;​ ячейках и редактировать​

​Важно понимать разницу между​ D и E,​ также как удалять​ в 0, а​

​ 15 символов. При​ текстовой строке (ячейка​ также формула массива​ год (см. файл​

​ статье или в​Про разбор фамилии​ сделано в файле​ адрес имеет четкую​ т.е. название города,​ с документами, необходимо​ относительные ссылки. Они​редактировать аргументы функций.​

​ благодаря строке формул.​ удалением строк (столбцов)​ выделите столбец E.​ их.​ ИСТИНА в 1).​ желании решение можно​А3​ — не забудьте​ примера). ​ группу ! Я​см. Разделяем пробелами Фамилию,​ примера, ссылка на​ структуру, например, могут​ улицы и номер​ совершить следующую последовательность​ записываются без знаков​ВАЖНО! Существует список типичных​ В ней отображается​ и удалением их​Нажмите команду Вставить, которая​В ходе работы с​ Знак умножения эквивалентен​ легко расширить на​) с помощью функции​ нажать​Теперь выведем эту же​ дополню эту статью​ Имя и Отчество.​ который внизу статьи.​ быть пропущены пробелы​ дома. Если необходимо​

​ действий:​ «$».​ ошибок возникающих после​ все, что содержит​ содержимого. Если Вы​ находится в группе​ книгой Excel может​ в данном случае​ большее количество символов​ ДЛСТР() в ячейке​CRTL+SHIFT+ENTER​ таблицу на другом​ самыми интересными из​Часто в русских текстовых​Усложним ситуацию. Пусть подстрока «д.»​ (запятые все же​ определить все компании​Выберите на панели вкладку​Знак «$» используется для​ ошибочного ввода, при​ каждая ячейка. На​ просто хотите очистить​ команд Ячейки на​ возникнуть необходимость вставить​ функции И(), т.е.​ и чисел.​B3​.​

​ листе, а продажи​ них.​ строках попадаются​ может встречаться в​ стоят). В этом​ в определенном городе,​ под названием «Вид»​ того, чтобы оставить​ наличии которых система​ картинке она выделена​ содержимое, тогда щелкните​ вкладке Главная.​ новые столбцы и​

​ строки совпадают, когда​Совет:​​;​Если в текстовой строке​ за квартал заменим​Для извлечения из таблицы​английские буквы​ адресе несколько раз,​ случае помогут функции,​

​ то нужно «разобрать»​ и нажать на​​ адреса на ссылки​ откажется проводить расчет.​

​ алым цветом.​​ правой кнопкой мыши​Новый столбец появится слева​

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

​ работающие с текстовыми​ адрес на несколько​ нее.​ в параметрах формулы​ Вместо этого выдаст​

Артикул товара

​Вводя в нее знак​ по заголовку и​ от выделенного.​

​ лист или удалить​ столбцов совпадают с​ число из начала​ количества столбцов =​ то вышеуказанные формулы​Для этого в ячейку​ можно использовать формулы,​ обнаружить и извлечь,​ названия деревни используется​

​ строками. Вот эти​ составляющих. Аналогичный подход​Проверьте, стоит ли галочка​ неизменными при ее​

​ вам на первый​ «=», вы словно​

​ из контекстное меню​При вставке строк и​

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

ВНИМАНИЕ!

​ «активируете» строку и​ выберите пункт Очистить​ столбцов в Excel,​ вставлять на лист​ строк. Функция СУММПРОИЗВ()​ решение соответствующей задачи.​ текстовой строке;​ В этом случае​на листе Нарастающий​ Автофильтр. Покажем преимущества​ слове в MS​

excel2.ru

Отбор строк таблицы MS EXCEL по их номеру

​ совпадает с префиксом​- Функция ЛЕВСИМВ() в MS​ разнести по столбцам​ формул». Если ее​ Абсолютная ссылка прописывается​ Чтобы они не​ говорите программе, что​

​ содержимое. Все содержимое​ рассмотренным ранее способом,​ новые строки и​

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

​ итог введите формулу аналогичную​ и недостатки обеих​ EXCEL латинские буквы,​ номера дома. В​ EXCEL — выводит нужное​ Имя и фамилию,​ нет, ставим.​ с двумя знаками​ были для вас​ собираетесь ввести какие-то​ выбранных строк и​ убедитесь, что Вы​ столбцы, при этом​

​ и использована вместо​ число из середины​ номера;​ подход:​ рассмотренной выше =ИНДЕКС(Лист1!B$8:B$17;ПОИСКПОЗ($A6;Лист1!$A$8:$A$17;0)) и​ подходов.​ цифры, ПРОПИСНЫЕ символы.​ этом случае нужно​

Выведем требуемые строки на том же листе

​ количество левых символов​ артикул товара или​После этого пропавшая строка​ «$»: перед буквой​

​ причиной паники, мы​​ данные, формулы.​​ столбцов будет очищено,​ выбрали их полностью,​ их общее количество​ СУММ() лишь для​

​ текстовой строки приведено​​в ячейку​скопируйте столбец с текстовыми​ скопируйте ее вниз.​Пусть имеется исходная таблица​

​Все статьи сайта, связанные​ определить все строки,​ строки;​ извлечь число или​

Выведем требуемые строки на другом листе

​ в программе «возвращается»​ (заголовок столбца) и​ приводим их расшифровку.​​ при этом сами​

​ нажав на заголовок.​​ не изменяется и​​ того, чтобы не​ решение соответствующей задачи.​С3​ строками, содержащие числа,​

​А в ячейке​​ с объемами продаж​​ с преобразованием текстовых​

​ в которых имеется​- Функция ПРАВСИМВ() в MS​ дату из текстовой​

​ на положенное ей​​ перед цифрой (заголовок​«#ССЫЛКА!». Говорит о том,​Формулы можно вводить в​ они не удалятся.​ Если же это​

​ остается фиксированным. Например,​ использовать формулы массива.​Найдем заданные строки в​введите формулу =ПСТР($A3;C$2;1)​ в MS WORD;​С6​

excel2.ru

Извлекаем в MS EXCEL число из конца текстовой строки

​ товаров по кварталам. ​ строк собраны в​ название деревень (первые​ EXCEL — выводит нужное​

​ строки.​ место. Таким же​​ строки). Вот так​​ что вы указали​ ячейки вручную или​Урок подготовлен для Вас​
​ не так, то​
​ если вы вставите​
​Для примера рассмотрим строку​

​ таблице. Строки состоят​ и протяните ее​нажмите​введите =ИНДЕКС(Лист1!C$8:C$17;ПОИСКПОЗ($A6;Лист1!$A$8:$A$17;0))+СУММ(B6)​Нам требуется отобразить только​

​ этом разделе: Изменение Текстовых​ 2 символа, т.к.​ количество правых символов​Данная статья является сводной,​ самым образом можно​

​ выглядит абсолютная ссылка:​

​ неправильную ссылку на​ с помощью строки​ командой сайта office-guru.ru​ команда Вставить добавит​ новый столбец, то​​ 18 (2-я строка​​ из 2-х столбцов,​

Несколько чисел в текстовой строке (через WORD)

​ вправо, заполнив все​CTRL+H​Скопируем ее вниз и​ строки с определенными​ Строк (значений).​ это адрес населенного​ строки;​

  • ​ т.е. в ней​ ее убрать, при​ =$С$1.​
  • ​ одну ячейку или​​ формул. Записать формулу​​Источник: http://www.gcflearnfree.org/office2013/excel2013/8/full​ лишь новые ячейки.​
  • ​ это приведет к​ в большой таблице).​ значения могут быть​ столбцы.​, т.е. вызовите инструмент​

  • ​ вправо. Получим требуемый​ номерами: 2, 3,​Пусть имеется перечень артикулов​ пункта) и исключить​- Функция ПСТР() в MS​ содержатся ссылки на​ необходимости.​Смешанная ссылка позволяет вам​ же на диапазон​ в ячейку, нужно​Автор/переводчик: Антон Андронов​
  • ​В Excel достаточно легко​ тому, что остальные​ Первое и второе​
  • ​ любыми.​Заменив формулу =ПСТР($A3;C$2;1) на​

​ Найти и Заменить;​ результат.​ 5, 10.​ товара: 2-3657; 3-4897;​ их. Также можно​ EXCEL — выводит часть​ другие статьи, в​

Несколько чисел в текстовой строке (через формулы, все числа склеиваются в одно)

​Еще один вариант. Переходим​ оставлять неизменным значение​ ячеек;​ начинать ее со​Автор: Антон Андронов​ удалить любую строку,​ столбцы сместятся вправо,​ выражения вернут массивы {ЛОЖЬ:ИСТИНА:ИСТИНА:ЛОЖЬ:ЛОЖЬ}​Пусть имеется перечень из​

  • ​ =ЕСЛИ(ЕОШ(—ПСТР($A3;C$2;1));»»;—ПСТР($A3;C$2;1)) можно вывести​В поле Найти введите​​Примечание​​Это можно легко сделать​ … ​​ извлечь все цифры​​ текста из середины​
  • ​ которых решены определенные​ в настройки «Файл»-«Параметры»-«Дополнительно».​ столбца или строки.​«#ИМЯ?». Проверьте, верно ли​
  • ​ знака «=». К​Microsoft Excel многие используют​
  • ​ которая Вам со​​ а последний просто​​ и {ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ} соответственно. После​ 5 строк, которые​ только числовые значения.​ ^$ (любая буква)​

​: О том, почему​ с помощью Автофильтра​Как видно, артикул состоит​ из строки в​ строки.​ задачи. Начнем с​ В правом списке​ Если вы поставите​

Несколько чисел в текстовой строке (через формулы, все числа размещаются в разные ячейки)

​ вы ввели адрес​ примеру, нам необходимо​ для выполнения простейших​ временем стала не​ удалится.​ попарного перемножения элементов​ требуется найти в​ Собрать все числовые​

  • ​ или его выберите​ в формуле использовано​ в столбце А.​ из 2-х числовых​
  • ​ отдельный диапазон (см.​Используя комбинации этих функций​ адресов.​ настроек находим раздел​ знак «$» перед​ ячейки и название​ ввести данные в​
  • ​ математических операций. Истинный​ нужна.​Выделите заголовок строки, выше​
  • ​ массивов, он будет​ таблице MS EXCEL.​ значения в одну​ из меню (см.​

​ выражение +СУММ(B6), а не​ Но. если нам​ частей, разделенных дефисом.​ статью Извлекаем в MS​ можно в принципе​Самый простейший случай, если​ «Экран» там же​ буквой в формуле,​ функции;​ нашу ячейку А1.​

​ функционал программы значительно​​Выделите строки, которые необходимо​ которой Вы хотите​ преобразован в {0:0:1:0:0}. Т.е.​ Предполагается, что строки​ ячейку можно с​ рисунок ниже);​ просто +В6 читайте​ требуется вывести строки​

excel2.ru

Поиск заданных строк в таблице MS EXCEL

​ Причем, числовые части​ EXCEL число из​ разобрать любую строку,​ адрес, состоящий из​ устанавливаем галочку напротив​

​ то значение номера​«#ДЕЛ/0!». Говорит о запрете​ Для этого выделяем​ шире.​ удалить. В нашем​ вставить новую. Например,​

​ строка 18 совпадает​ не повторяются.​ помощью формулы =—Т(C7&D7&E7&F7&G7&H7&I7&J7&K7&L7&M7&N7&O7&P7&Q7)​

​в поле Заменить на:​ в этой статье.​ не в исходной​ имеют строго заданный​

​ конца текстовой строки).​ имеющую определенную структуру.​ названия города, улицы​

​ опции «Показывать строку​ строки.​ деления на 0.​ ее, ставим знак​Excel позволяет решать сложнейшие​ примере это строки​ если необходимо вставить​ с третьей искомой​Будем искать эти строки​ или =СЦЕПИТЬ(C7;D7;E7;F7;G7;H7;I7;J7;K7;L7;M7;N7;O7;P7;Q7)+0​ оставьте пустым (если​В файле примера показано​ таблице, а например,​ размер: первое число​ Но, что делать,​ Об этом смотри​ и т.д., импортирован​

​ формул».​Но если формула будет,​ Скорее всего, вы​ «=» и вводим​ задачи, выполнять уникальные​ 6, 7 и​ новую строку между​ строкой. Функция СУММПРОИЗВ() вернет 1.​ в большой таблице​Если в текстовой строке​ все числа в​ как с помощью​ на другом листе​ состоит из 1​ если в названии​ статью Разнесение в MS​ в ячейку MS​Строку для ввода данных​ смещается относительно столбцов​ ввели в строку​

​ данные. Строка «придет​ математические расчеты, проводить​ 8.​ строками 7 и​СОВЕТ​ (см. файл примера). ​ расположено несколько чисел​ строке нужно вывести​ формул вывести только​ или при выводе​ цифры, второе -​ улицы есть числа?​

​ EXCEL текстовых строк​​ EXCEL из другой​ в ячейки можно​ (по горизонтали), то​

​ формул ячейку с​ в рабочее состояние»​ анализ статистических данных​Нажмите команду Удалить, которая​

​ 8, выделите строку​: Для просмотра промежуточных​Строки считаются совпадающими, когда​ и их нужно​ одним числом, т.е.​ четные строки или​

​ строк отобразить не​ из 4-х.​ Например, «26 Бакинских​

excel2.ru

Вставка и удаление строк и столбцов в Excel

​ по столбцам.​ информационной системы. В​ увеличить, если нельзя​ ссылка будет изменяться,​ «нулевым» значением;​ сама собой. На​ и многое другое.​ находится в группе​ 8.​ вычислений воспользуйтесь клавишей​ их значения в​ вывести в разные​ текстовая строка 123Филато11в6а будет​ только нечетные (попробуйте​ значения продаж за​

​Задача состоит в том,​ комиссаров». Короче, тут​Еще раз отмечу, что​ этом случае у​ увидеть большую и​ так как она​«#ЧИСЛО!». Свидетельствует о том,​ примере мы взяли​ Важным элементом рабочего​ команд Ячейки на​Нажмите команду Вставить, которая​ F9.​ обоих столбцах попарно​ ячейки, то можно​ преобразована в 123116)​ это сделать Автофильтром!)​ квартал, а продажи​ чтобы определить артикулы,​ начинается творчество. ​ перед использованием функций​

Вставка строк в Excel

  1. ​ адреса имеется определенная​ сложную формулу целиком.​ смешанная.​ что значение аргумента​ ту же ячейку​ поля в Microsoft​ вкладке Главная.​ находится в группе​Вставка строк в Excel
  2. ​С помощью формулы массива =ПОИСКПОЗ(1;(B17=B$8:B$12)*(C17=C$8:C$12);0) найдем​ совпадают.​ предложить следующий алгоритм​ или введите пробел​Вставка строк в Excel
  3. ​Извлечем число из конца​ нарастающим итогом?​Вставка строк в Excel

​ у которых левый​Не забудьте про пробелы!​ необходимо понять структуру​ структура (если элементы​ Для этого:​Использование смешанных ссылок позволяет​ функции уже не​ «А1», ввели знак​ Excel является строка​Выделенные строки будут удалены,​ команд Ячейки на​ номер искомой строки.​Для поиска совпадений будем​ (см. файл примера,​ (если в дальнейшем​ текстовой строки, например,​

Вставка строк в Excel

Вставка столбцов в Excel

  1. ​В этом случае можно​ индекс​ Каждый пробел -​ текстовой строки, которую​ адреса хранились в​Наведите курсор мышки на​ вам варьировать формулы​Вставка столбцов в Excel
  2. ​ соответствует допустимой величине;​ «=» и нажали​ формул. Попробуем разобраться​ а те, что​Вставка столбцов в Excel
  3. ​ вкладке Главная.​ Формулу разместим в​Вставка столбцов в Excel

​ использовать формулу =СУММПРОИЗВ((B17=B$8:B$12)*(C17=C$8:C$12)) Формулу разместим​ лист Общий случай):​ потребуется вывести числа​ из строки «Филатова123»​ воспользоваться Сводными таблицами​Первая часть задачи решается​ это отдельный символ.​ требуется разобрать. Например,​ отдельных полях) и​ границу между строкой​

Удаление строк в Excel

​ и значения.​«;;;#». Ширины вашей ячейки​ ввод, чтобы подсчитать​ с принципами ее​ расположены ниже, сместятся​

  1. ​Новая строка появится выше​ столбце Е.​ в столбце D.​как в предыдущем примере​ в отдельные ячейки);​Удаление строк в Excel
  2. ​ получим «123».​ или формулами. В​ формулой =—ЛЕВСИМВ(A16;1)​ Часто при печати​Удаление строк в Excel
  3. ​ извлечем номер дома​ скорее всего нет​ и заголовками столбцов​Примечание. Чтобы каждый раз​ не хватает для​ сумму двух чисел.​ работы и ответить​ вверх. В нашем​ выбранной.​Также для каждой искомой​Удаление строк в Excel

Удаление столбцов в Excel

  1. ​Формула работает следующим образом.​ каждый символ текстовой​нажмите ОК, буквы будут​Пусть текстовая строка Филатова123​Удаление столбцов в Excel
  2. ​ этой статье воспользуемся​Вторая часть задачи решается​ их ставят 2​ из вышеуказанного адреса.​Удаление столбцов в Excel
  3. ​ (мало) опечаток. Разгадав​ листа так, чтобы​ не переключать раскладку​ того, чтобы отобразить​Можно использовать мастер функций​ на ключевые вопросы,​ примере, после удаления​Удаление столбцов в Excel

​При вставке новых строк​ строки можно определить,​ Выражение B17=B$8:B$12 сравнивает текущее​ строки выводим в​ заменены пробелами или​ находится в ячейке​ формулами для того,​ формулой =ЗНАЧЕН(ПРАВСИМВ(A16;4)). ​ или 3 подряд,​ Понятно, что потребуется​ структуру можно быстро​ он изменил свой​ в поисках знака​ полученное число. Вам​ (кнопка fx):​

Удаление столбцов в Excel

​ связанные с ней.​ строк 6, 7​
​ или столбцов, Вы​
​ если она в​

​ значение первого столбца​

office-guru.ru

Строка формул в Excel ее настройки и предназначение

​ отдельную ячейку;​ просто убраны;​A1​ чтобы сформировать своеобразный​Зачем нам потребовалась функция ЗНАЧЕН()?​

​ а это совсем​ использовать функцию ПРАВСИМВ(),​ разнести адрес по​ внешний вид на​ «$», при вводе​ необходимо расширить ее.​Активируем необходимую ячейку и​Microsoft Excel – одна​ и 8, на​ можете увидеть смарт-тег​ большой таблице. Это​ большой таблицы со​с помощью функций СЖПРОБЕЛЫ()​

Для чего предназначена строка формул в Excel?

​скопируйте столбец обратно в​. Чтобы извлечь число​ Отчет на основе​ Дело в том,​ не то же​ но сколько символов​ столбцам. Например, адрес «г.Москва,​

  • ​ 2 стрелочки.​
  • ​ адреса воспользуйтесь клавишей​
  • ​Все эти ошибки отображаются​
  • ​ переходим к строке​
  • ​ из самых полезных​
  • ​ их место переместятся​
  • ​ Параметры добавления. Он​
  • ​ можно сделать с​
  • ​ всеми значениями первого​ и (СЦЕПИТЬ() или​

​ MS EXCEL.​ 123, расположенное справа,​ исходной таблицы.​ что текстовые функции,​ самое, что один​ извлечь? Два? А​ ул.Тверская, д.13″ очевидно​Удерживая левую клавишу мышки,​ F4. Она служит​

Функция.

​ в ячейках, а​ формул, находим там​ программ, которая позволяет​ строки 9, 10​ позволяет выбрать, как​ помощью функции =ЕСЛИ(ЕНД(ПОИСКПОЗ(A8;$E$17:$E$28;0));»»;»Да!»)​

​ столбца искомых строк,​

Как ввести формулу в строку?

​ аперсанда &) выводим​Если требуется вывести полученные​ запишем формулу массива:​Сделаем заготовку таблицы, в​ такие ка ПРАВСИМВ(),​ пробел. Используйте функцию Функция​ если в других​ состоит из 3-х​ переместите курсор вниз​ переключателем типов ссылок.​ в строке формул​ значок «fx», нажимаем.​ пользователю выполнять больше​ и 11.​ программа Excel должна​Найденные строки можно выделить​ и возвращает массив​ текстовую строку без​ числа в отдельные​=1*ПСТР(A1;​ левом столбце укажем​ возвращают текст, а​

Значение.

​ СЖПРОБЕЛЫ() в MS​ адресах номер дома​

  1. ​ блоков: город, улица,​ на необходимое количество​ Если ее нажимать​ сохраняется значение после​Fx.
  2. ​Сразу же он предлагает​ 400 математических операций.​Выделите столбец, который необходимо​ форматировать вставленные ячейки.​ с помощью Условного​Мастер.
  3. ​ логических значений {ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}. 5​ букв (т.е. только​ ячейки, то используйте​

Аргументы.

​ПОИСКПОЗ(ЛОЖЬ;ЕОШИБКА(1*ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1));0);​ строки, которые требуется​ не число (т.е.​ EXCEL, чтобы избавиться​

  • ​ состоит из 1​ дом, разделенных пробелами​
  • ​ строк. Пока не​ периодически, то символ​
  • ​ ввода.​

​ выбрать функцию, которая​ Все они сгруппированы​ удалить. В нашем​ По умолчанию ячейки​ форматирования.​ значений ЛОЖЬ означает,​ числа), между числами​ инструмент Текст-по-столбцам (мастер​255)​ вывести.​ в нашем случае​ от лишних пробелов.​

  • ​ или 3 цифр?​ и запятыми. Кроме​ будет вольностью отображаться​ «$» проставляется, автоматически​Часто у пользователей возникает​ необходима пользователю. Выбираем​
  • ​ в 9 категорий:​ примере это столбец​ вставляются с тем​При работе с Excel​
  • ​ что значение 1,2​ — 1 пробел;​ текстов) или материал​Если число расположено в​В ячейке​ число в текстовом​
  • ​Об извлечении чисел из​ В этом случае​ того, перед названием​ содержимое.​
  • ​ делая ссылки абсолютными​ необходимость скопировать формулу,​ нужную опцию, нажимаем​финансовые;​ E.​

​ же форматированием, что​ Вы можете свободно​ из В17 не​с помощью функции ПОИСК()​ статьи Разнесение текстовых​

Ошибка.

Что означает знак $ в строке формул Excel?

​ начале или середине​В22​ формате). Для того,​ текстовой строки​ можно попытаться найти​ стоят сокращения г.,​Таким образом, можно увидеть​ или смешанными.​ вставить ее в​ «ОК».​дата и время;​Нажмите команду Удалить, которая​ и в строке​ вставлять новые строки​ найдено в диапазоне B$8:B$12,​ находим начальные позиции​ строк по столбцам.​

​ значения, то формула​введем формулу =ИНДЕКС(B$8:B$17;ПОИСКПОЗ($A22;$A$8:$A$17;0)) и​ чтобы применить к​см. здесь: Извлекаем в​ подстроку «д.», после​ ул., д. С​ и редактировать длинные​Как вернуть строку формул​ другое место рабочего​Дальше в диалоговом окне​текстовые;​ находится в группе​ выше (столбце правее).​ и столбцы на​

​ состоящем из 5​ каждого числа;​Если в текстовой строке​ работать не будет​ скопируем ее для​ таким числам в​ MS EXCEL число​ которой идет номер​

Смешанная.

​ такой задачей достаточно​ функции. Так же​ в Excel на​ поля. Проблема в​ вводим значения в​статистика;​

По горизонтали.

​ команд Ячейки на​ Для доступа к​ рабочий лист, а​

​ значений, т.к. значение​с помощью функции ПСТР(),​ расположено несколько чисел,​ (см. файл примера).​ всех кварталов и​ текстовом формате операцию​ из начала текстовой​ дома. Это можно​ легко справится инструмент​ данный метод полезный​ место? Самая распространенная​ том, что при​

Пропала строка формул в Excel

​ параметрах выбранной функции.​математические;​ вкладке Главная.​ дополнительным опциям, наведите​ при необходимости даже​ не встречается в​ ЛЕВСИМВ(), ПРАВСИМВ() выводим​ то для извлечения​Общая формула, позволяющая извлечь​ строк.​ сравнения с другим​ строки или здесь Извлекаем в​ сделать с помощью​ MS EXCEL Текст​

  1. ​ для тех ячеек,​ причина ее исчезновения​ копировании или заполнении​Что включает строка редактора​
  2. ​массивы и ссылки;​Выделенный столбец будет удален,​ курсор на смарт-тег​ удалять их, например,​

Галочка.

​ первом столбце искомых​ числа в отдельные​ чисел можно вывести​ число из начала,​Примечание​ числом, т.е. ​ MS EXCEL число​

​ функции ПОИСК() (см. статью​ по столбцам. Как​ которые содержат много​ – смена настроек.​ формы, ссылка корректируется​ формул Excel? На​работа с БД;​ а те, что​

Большая строка формул

​ и нажмите стрелку.​ когда данные устарели.​ строк.​ ячейки.​ каждый символ текстовой​ середины и конца​

  1. ​: Обратите внимание на​Если у Вас есть​ из середины текстовой​ Нахождение в MS​ это сделать написано​ текстовой информации.​ Скорее всего, вы​Курсор.
  2. ​ автоматически. Поэтому вы​ практике в данное​логические;​ находились справа, сместятся​Выделите заголовок столбца, левее​ В этом уроке​

Увеличить строку.

​Аналогично, второе выражение ищет​Решение из файла примера​ строки в отдельную​ текстовой строки посложнее​ смешенные ссылки B$8:B$17 и $A22​ примеры или вопросы,​ строки.​

exceltable.com

​ EXCEL позиции n-го​

Как разделить текст в ячейке Excel?

Добрый день уважаемый читатель!

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

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

Мастер разбора текстов

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

Для выполнения задачи вызываем диалоговое окно «Мастер текстов (разбор)» и в 3 шага разделяем текст:

  1. Для начала нужно выделить данные, которые необходимо разделить, следующим шагом на вкладке «Данные» в разделе «Работа с данными» нажимаете иконку «Текст по столбцам» и в вызванном диалоговом окне мастера указываем формат рабочего текста. Выбираем 2 вида форматов:
  • С разделителями – это когда существует текст или символ, который условно будет отделять будущее содержимое отдельных ячеек;
  • Фиксированной ширины – это когда при помощи пробелов в тексте имитируется столбики одинаковой ширины.
  1. Вторым шагом, в нашем примере, указываем символ, выполняющий роль разделителя. В случаях, когда в тексте идут подряд пару разделителей, несколько пробелов, к примеру, то установка флажка для пункта «Считать последовательные разделители одним» укажет для Excel принимать их за один разделитель. Дополнительное условие «Ограничитель строк» поможет указать, что текстовые значения, содержащиеся в кавычках не делить (к примеру, название фирмы «Рудольф, Петер и Саймон»);
  2. Последним шагом, для уже разделённых столбиков, нужно указать в диалоговом окне мастера, предварительно выделив их, выбрать необходимый формат получаемых данных:
  • Общий – не проводит изменения данных, оставляя их в первоначальном виде, будет оптимальным выбором в большинстве случаев;
  • Текстовый – данный формат, в основном, необходим для столбиков с числовыми значениями, которые программа в обязательном порядке должна интерпретировать как текст. (К примеру, это числа с разделителем по тысяче или номер пластиковой карточки);
  • Дата – этот формат используется для столбиков с датами, кстати, формат самой даты можно выбрать в выпадающем списке.

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

Рассоединяем текст с помощью формул

Для этого способа нам понадобятся возможности сочетаний функций ПОИСК и ПСТР. При помощи функции ПОИСК мы будем искать все пробелы, которые есть между словами (например, между фамилией, именем и отчеством). Потом функцией ПСТР выделяем необходимое количество символов для дальнейшего разделения.

И если с первыми двумя словами понятно, что и как разделять, то разделителя для последнего слова нет, а это значит что нужно указать в качестве аргумента условно большое количество символов, как аргумент «число_знаков» для функции ПСТР, например, 100, 200 или больше.

А теперь поэтапно рассмотрим формирование формулы для разделения текста в ячейке:

  • Во-первых, нам необходимо найти два пробела, которые разделяют наши слова, для поиска первого пробела нужна формула: =ПОИСК(» «;B2;1), а для второго подойдет: =ПОИСК(» «;B2;C2+1);
  • Во-вторых, определяем, сколько символов нужно выделить в строке. Поскольку позиции разделителя мы уже определили, то символов для разделения у нас будет на один меньше. Значит, будем использовать функцию ПСТР для изъятия слов, с ячейки используя как аргумент «количество_знаков» результат работы предыдущей формулы. Для определения первого слова (Фамилии) нужна формула: =ПСТР(B2;1;ПОИСК(» «;B2;1)), для определения второго значения (Имя): =ПСТР(B2;ПОИСК(» «;B2;1)+1;ПОИСК(» «;B2;ПОИСК(» «;B2;1)+1) -ПОИСК(» «;B2;1)), а теперь определим последнее значение (Отчество): =ПСТР(B2;ПОИСК(» «;B2;ПОИСК(» «;B2;1)+1)+1;100).

В результате мы разделили ФИО на три слова, что позволит с ними эффективно работать.

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

Выдергиваем слова с помощью макросов VBA

Рассмотрим два способа разделить текст в ячейке:

  1. Выдергиваем отдельные слова по разделителю;
  2. Делим текст без пробелов.

Способ №1.

Поскольку вас интересует автоматическое деление текста, значит надо написать хорошую функцию на VBA и внедрить ее в рабочую книгу. Для начала переходим на вкладку «Разработчик» и выбираем «Visual Basic» или вызываем эту возможность с помощью горячего сочетания клавиш Alt+F11. (детальнее в статье «Как создать макрос в Excel»).

Создаем новый модуль в меню «Insert» наживаем пункт «Module» и переносим в него нижеприведенный код:

Разбить по строкам/столбцам

Данная функция является частью надстройки MulTEx

  • Описание, установка, удаление и обновление
  • Полный список команд и функций MulTEx
  • Часто задаваемые вопросы по MulTEx
  • Скачать MulTEx

Вызов команды:
MulTEx -группа Ячейки/ДиапазоныДиапазоныРазбить по строкам/столбцам

Эта команда разбивает данные во всех выделенных ячейках на части, используя в качестве разделителя указанные символ/символы. Главная особенность — в отличие от стандартной команды Excel «Разбить по столбцам», данная команда заносит результат разбиения данных в строки либо столбцы в одну строку/столбец, а не каждую часть в свой столбец. К тому же в стандартной команде Excel нет возможности указать несколько символов — только один.

Диапазон значений — указывается диапазон ячеек, данные которых необходимо разбить. Может быть как одним столбцом/строкой, так и диапазоном, состоящим из нескольких строк и нескольких столбцов.
Разделитель — указывается символ (или группа символов), который будет применен в качестве разделителя. Если разделитель не указан, то появится сообщение, информирующее об этом. В сообщении будет предложено использовать разделитель по умолчанию (Пробел). В случае отказа Вы сможете указать необходимый разделитель. Данные, внесенные ранее не будут утеряны.

    Специальный — можно добавить в поле Разделитель один из специальных символов: неразрывный пробел или перенос на строки. Стандартно такие символы невозможно ввести с клавиатуры, но они могут часто встречаться в ячейках. Например, эти символы часто применяется в выгрузках из различных программ(вроде 1С): неразрывный пробел для разделения цифр или слов, которые не надо переносить на строки, а перенос на строки — для разделения основания платежей и иной информации.
    Если в поле Разделитель уже указан какой-либо символ, то при выборе дополнительно специального символа будет показано сообщение:
  • ДА(YES) — в поле Разделитель будет добавлен указанный специальный символ. Указанные ранее символы не будут удалены.
  • НЕТ(NO) — поле Разделитель будет очищено и в него будет помещен только выбранный специальный символ.
  • Поместить результат:

    Разделитель результата:
    Доступно только если в качестве вывода результата указана одна ячейка. По умолчанию разделителем является перенос на строки. В качестве разделителя можно указать любой символ или группу символов.

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

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

    Финансы в Excel

    Текст по столбцам и строкам

    Подробности Создано 03 Май 2012

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

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

    Напомним, что интерфейсное средство «Текст по столбцам» доступно через меню и ленту Excel Данные Текст по столбцам.

    В файле-примере показано два типа формулы для разделения текста на составляющие:

    • текст по столбцам (диапазон B5:K6)
    • текст по строкам (диапазон A10:B19)

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

    Формула в ячейке B5 и далее по столбцам обрабатывает исходный текст из ячейки A5:

    Формула в ячейке A10 и далее по строкам обрабатывает исходный текст из ячейки A9:

    Формулы ссылаются только на исходный текст и не требуют наличия других предварительно вычисленных составляющих. Варианты отличаются только автоматическим определением порядкового номера текстовой составляющей, в первом случае — это подформула для вычисления номера от количества столбцов: COLUMNS($B:B); во втором — от количества строк: ROWS($10:10). При копировании диапазон столбцов и строк автоматически расширяется, вычисляя таким образом нужное значение. Вместо этой подформулы можно задать константу или переменную, определяющую требуемый номер. Из результатирующих текстовых значений убираются лишние пробелы при помощи функции TRIM().

    Наверняка можно сделать формулу покороче, используя другие методы поиска. Это просто наш вариант — оригинальный, нигде не подсмотренный 😉

    Как разделить текст в ячейке Excel?

    Добрый день уважаемый читатель!

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

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

    Мастер разбора текстов

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

    Для выполнения задачи вызываем диалоговое окно «Мастер текстов (разбор)» и в 3 шага разделяем текст:

    1. Для начала нужно выделить данные, которые необходимо разделить, следующим шагом на вкладке «Данные» в разделе «Работа с данными» нажимаете иконку «Текст по столбцам» и в вызванном диалоговом окне мастера указываем формат рабочего текста. Выбираем 2 вида форматов:
    • С разделителями – это когда существует текст или символ, который условно будет отделять будущее содержимое отдельных ячеек;
    • Фиксированной ширины – это когда при помощи пробелов в тексте имитируется столбики одинаковой ширины.
    1. Вторым шагом, в нашем примере, указываем символ, выполняющий роль разделителя. В случаях, когда в тексте идут подряд пару разделителей, несколько пробелов, к примеру, то установка флажка для пункта «Считать последовательные разделители одним» укажет для Excel принимать их за один разделитель. Дополнительное условие «Ограничитель строк» поможет указать, что текстовые значения, содержащиеся в кавычках не делить (к примеру, название фирмы «Рудольф, Петер и Саймон»);
    2. Последним шагом, для уже разделённых столбиков, нужно указать в диалоговом окне мастера, предварительно выделив их, выбрать необходимый формат получаемых данных:
    • Общий – не проводит изменения данных, оставляя их в первоначальном виде, будет оптимальным выбором в большинстве случаев;
    • Текстовый – данный формат, в основном, необходим для столбиков с числовыми значениями, которые программа в обязательном порядке должна интерпретировать как текст. (К примеру, это числа с разделителем по тысяче или номер пластиковой карточки);
    • Дата – этот формат используется для столбиков с датами, кстати, формат самой даты можно выбрать в выпадающем списке.

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

    Рассоединяем текст с помощью формул

    Для этого способа нам понадобятся возможности сочетаний функций ПОИСК и ПСТР. При помощи функции ПОИСК мы будем искать все пробелы, которые есть между словами (например, между фамилией, именем и отчеством). Потом функцией ПСТР выделяем необходимое количество символов для дальнейшего разделения.

    И если с первыми двумя словами понятно, что и как разделять, то разделителя для последнего слова нет, а это значит что нужно указать в качестве аргумента условно большое количество символов, как аргумент «число_знаков» для функции ПСТР, например, 100, 200 или больше.

    А теперь поэтапно рассмотрим формирование формулы для разделения текста в ячейке:

    • Во-первых, нам необходимо найти два пробела, которые разделяют наши слова, для поиска первого пробела нужна формула: =ПОИСК(» «;B2;1), а для второго подойдет: =ПОИСК(» «;B2;C2+1);
    • Во-вторых, определяем, сколько символов нужно выделить в строке. Поскольку позиции разделителя мы уже определили, то символов для разделения у нас будет на один меньше. Значит, будем использовать функцию ПСТР для изъятия слов, с ячейки используя как аргумент «количество_знаков» результат работы предыдущей формулы. Для определения первого слова (Фамилии) нужна формула: =ПСТР(B2;1;ПОИСК(» «;B2;1)), для определения второго значения (Имя): =ПСТР(B2;ПОИСК(» «;B2;1)+1;ПОИСК(» «;B2;ПОИСК(» «;B2;1)+1) -ПОИСК(» «;B2;1)), а теперь определим последнее значение (Отчество): =ПСТР(B2;ПОИСК(» «;B2;ПОИСК(» «;B2;1)+1)+1;100).

    В результате мы разделили ФИО на три слова, что позволит с ними эффективно работать.

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

    Выдергиваем слова с помощью макросов VBA

    Рассмотрим два способа разделить текст в ячейке:

    1. Выдергиваем отдельные слова по разделителю;
    2. Делим текст без пробелов.

    Способ №1.

    Поскольку вас интересует автоматическое деление текста, значит надо написать хорошую функцию на VBA и внедрить ее в рабочую книгу. Для начала переходим на вкладку «Разработчик» и выбираем «Visual Basic» или вызываем эту возможность с помощью горячего сочетания клавиш Alt+F11. (детальнее в статье «Как создать макрос в Excel»).

    Создаем новый модуль в меню «Insert» наживаем пункт «Module» и переносим в него нижеприведенный код:

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

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

    Для примера рассмотрим данные CSV файла. Каждая подстрока в нем разделена символом «точка с запятой» и помещена в двойные кавычки. Вставьте их в любое место Вашей рабочей книги:

    Перед разбивкой данных требуется выделить нужный диапазон, а затем кликнуть по пиктограмме «Текст по столбцам» в области «Работа с данными» на ленте вкладки «Данные».

    На экране будет отображено окно мастера распределения текста:

    Весь процесс состоит из трех шагов.

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

    Выберите пункт «С разделителями» и нажмите кнопку «Далее».

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

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

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

    Имейте в виду то, что символы-разделители и ограничители удаляются из содержимого разделенных данных.

    На любом описанным выше этапе можно нажать кнопку «Готово» для предоставления возможности приложению Excel самостоятельно завершить разделение текста в ячейках столбца. Но если Вы хотите контролировать весь процесс, то продолжайте нажимать «Далее».

    Завершающим шагом является назначение форматирования новым колонкам и указания места для их расположения.

    Из возможных настроек предоставлено только несколько форматов (типов данных), а поместить распределенный текст можно только на текущем листе.

    У Вас недостаточно прав для комментирования.

    Понравилась статья? Поделить с друзьями:

    А вот еще интересные статьи:

  • Как размножить строку в excel
  • Как разобрать excel файл
  • Как размножить строки в excel по количеству в ячейке
  • Как разные числа посчитать на одно в excel
  • Как размножить страницу в word

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии