Excel конкатенация строк
Функция СЦЕПИТЬ (CONCATENATE)
В этой заметке рассмотрим, как склеить содержимое из нескольких ячеек, чтобы все оказалось в одной ячейке. Это распространенная задача и она довольно легко решается с помощью функции Excel СЦЕПИТЬ. Эта функция умеет не только соединять ячейки, но и добавлять любые другие символы. В строке формул выглядит примерно так.
Здесь между ячейками вставлены пробелы (» «) и в конце дорисовывается восклицательный знак.
Однако эти самые пробелы являются первым неприятным моментом при использовании функции СЦЕПИТЬ, т.к. функция склеивает ячейки без «шва» и пробелы приходится добавлять вручную. Если нужно соединить только несколько слов, то беда не большая, но когда нужно склеить хотя бы с десяток ячеек, то ручная добавка пробелов слегка утомляет. Чтобы немного облегчить процесс, можно посоветовать вставить пробел в отдельную ячейку и затем просто делать на нее ссылку.
Так дело идет немного быстрее. Хотя и не очень эффективно – потребуется занять отдельную ячейку. А если нечаянно эту ячейку удалить, то получится вообще нехорошо. В целом при небольшом количестве данных, работают оба варианта.
Кстати, не все знают, что в Excel для склеивания ячеек также предусмотрен специальный оператор – & (амперсанд). Его нужно просто поставить между связываемыми ячейками или символами.
Вставлять амперсанд не удобно – нужно вначале переключиться на английскую раскладку, а затем нажать Shift + 7. Поэтому рекомендуется воспользоваться специальной комбинацией – удерживая клавишу Alt нажать 3 и 8 на цифровой клавиатуре. Здорово помогает сохранить душевное равновесие.
Формула СЦЕПИТЬ и амперсанд исправно работают до тех пор, пока не приходится соединять большое количество ячеек. Замучаешься вставлять «;» либо «&». Более того, между ячейками, как привило, добавляется пробел. К сожалению, указать в качестве аргумента целый диапазон нельзя (уже можно). Выход из этой ситуации следующий.
Функция СЦЕПИТЬ для большого количества ячеек
Один из вариантов заключатся в том, чтобы в качестве ссылки на ячейки указать массив данных. Следует сразу отметить, что данные могут располагаться по горизонтали или вертикали. Если данные расположены в одной строке, то делаем следующее. Для примера, отдельные по ячейкам слова находится в 5-й строке. Теперь в пустой ячейке указываем весь диапазон для соединения и через амперсанд (&) добавляем пробел (» «).
Затем нажимаем F9, для того, чтобы формула выдала результат вычисления, в нашем случае это будет массив.
Как видно к каждому слову добавился пробел, а между словами стоит точка с запятой – как раз то, что нужно для вставки в формулу СЦЕПИТЬ. Теперь убираем лишние скобки и вставляем этот массив в формулу. Нажимаем Enter.
Данные могут быть расположены не по горизонтали, (как в примере выше), а по вертикали. В этом случае в получаемом массиве значения будут разделены двоеточием. Придется сделать один лишний шаг, чтобы заменить их на точку с запятой (через Найти и заменить, горячая клавиша Ctrl + H, либо еще быстрее — использовать функцию ТРАНСП, чтобы из горизонтального массива сделать вертикальный).
Этот вариант работает неплохо, но подходит для одноразового использования, т.к. исходная информация не связана с исходными ячейками. Для изменения придется лезть внутрь формулы или повторять действия для новых данных. Кроме того, существует ограничение по длине одной формулы, и соединить таким образом несколько тысяч ячеек не всегда получается.
Поэтому переходим к следующему способу. Он, признаться, выглядит не очень эстетично. Зато дешево, надежно, и практично! (с) Во всяком случае прием помогает решить проблему. А это самое главное. Нам потребуется один дополнительный столбец (или строка, смотря как расположены исходные данные для соединения).
Рассмотрим только вертикальное расположение данных (горизонтальное будет работать аналогично). Суть в том, чтобы рядом с данными создать столбец с формулой СЦЕПИТЬ, которая последовательно будет присоединять по одному слову по мере продвижения вниз. В нашем случае первая формула будет содержать только слово «Александр » (и пробел), следующая ниже добавляет «Сергеевич » (и пробел) и т.д.
Искомой ячейкой будет самая последняя, объединяющая уже все слова. Результат можно оставить в виде формулы, а можно сохранить как значение, удалив все расчеты.
Соединение текста и даты
И еще один трюк с формулой СЦЕПИТЬ. Довольно часто приходится соединять текст с датой. Дата, как известно, это простое порядковое число (отсчет начинается с 1 января 1900 года), которому придается нужный формат даты. Если же соединить напрямую текст и дату, то на выходе получится указанный текст и простое число. Возьмем, например, слово «Сегодня » (не забываем добавить пробел в конце) и функцию СЕГОДНЯ (всегда возвращающую текущую дату).
Как видно, ничего не получилось.
Для правильной склейки нужно «обернуть» дату в формулу ТЕКСТ, которая придает указанный формат числу.
Формат ДД.ММ.ГГ указывает, в каком виде должна отражаться дата. Если, например, указать формат ДД.ММ.ГГГГ, то дата будет выглядеть так: 03.09.2015 (год состоит из 4-х цифр).
Кстати, добавлять текст к числу или дате можно не только с помощью функции СЦЕПИТЬ. Можно использовать пользовательский числовой формат. У меня когда-то в рабочем файле красовалась автоматически обновляемая надпись.
Поэтому я всегда был прекрасно осведомлен о текущей дате и дне недели. При этом содержимое ячейки состояло только из одной функции СЕГОДНЯ.
Реализовать подобную идею довольно просто. Но это уже чистое форматирование. Расскажу при случае подробней.
P.S. Все проблемы выше решены в новых функциях Excel СЦЕП и ОБЪЕДИНИТЬ .
Источник: statanaliz.info
3 способа склеить текст из нескольких ячеек
Надпись на заборе: «Катя + Миша + Семён + Юра + Дмитрий Васильевич +
товарищ Никитин + рыжий сантехник + Витенька + телемастер Жора +
сволочь Редулов + не вспомнить имени, длинноволосый такой +
ещё 19 мужиков + муж = любовь!»
Способ 1. Функции СЦЕПИТЬ, СЦЕП и ОБЪЕДИНИТЬ
В категории Текстовые есть функция СЦЕПИТЬ (CONCATENATE) , которая соединяет содержимое нескольких ячеек (до 255) в одно целое, позволяя комбинировать их с произвольным текстом. Например, вот так:
Нюанс: не забудьте о пробелах между словами – их надо прописывать как отдельные аргументы и заключать в скобки, ибо текст.
Очевидно, что если нужно собрать много фрагментов, то использовать эту функцию уже не очень удобно, т.к. придется прописывать ссылки на каждую ячейку-фрагмент по отдельности. Поэтому, начиная с 2016 версии Excel, на замену функции СЦЕПИТЬ пришла ее более совершенная версия с похожим названием и тем же синтаксисом – функция СЦЕП (CONCAT) . Ее принципиальное отличие в том, что теперь в качестве аргументов можно задавать не одиночные ячейки, а целые диапазоны – текст из всех ячеек всех диапазонов будет объединен в одно целое:
Для массового объединения также удобно использовать новую функцию ОБЪЕДИНИТЬ (TEXTJOIN) , появившуюся начиная с Excel 2016. У нее следующий синтаксис:
=ОБЪЕДИНИТЬ( Разделитель ; Пропускать_ли_пустые_ячейки ; Диапазон1 ; Диапазон2 . )
- Разделитель – символ, который будет вставлен между фрагментами
- Второй аргумент отвечает за то, нужно ли игнорировать пустые ячейки (ИСТИНА или ЛОЖЬ)
- Диапазон 1, 2, 3 . – диапазоны ячеек, содержимое которых хотим склеить
Например:
Способ 2. Символ для склеивания текста (&)
Это универсальный и компактный способ сцепки, работающий абсолютно во всех версиях Excel.
Для суммирования содержимого нескольких ячеек используют знак плюс “+“, а для склеивания содержимого ячеек используют знак “&” (расположен на большинстве клавиатур на цифре “7”). При его использовании необходимо помнить, что:
- Этот символ надо ставить в каждой точке соединения, т.е. на всех “стыках” текстовых строк также, как вы ставите несколько плюсов при сложении нескольких чисел (2+8+6+4+8)
- Если нужно приклеить произвольный текст (даже если это всего лишь точка или пробел, не говоря уж о целом слове), то этот текст надо заключать в кавычки. В предыдущем примере с функцией СЦЕПИТЬ о кавычках заботится сам Excel – в этом же случае их надо ставить вручную.
Вот, например, как можно собрать ФИО в одну ячейку из трех с добавлением пробелов:
Если сочетать это с функцией извлечения из текста первых букв – ЛЕВСИМВ (LEFT) , то можно получить фамилию с инициалами одной формулой:
Способ 3. Макрос для объединения ячеек без потери текста.
Имеем текст в нескольких ячейках и желание – объединить эти ячейки в одну, слив туда же их текст. Проблема в одном – кнопка Объединить и поместить в центре (Merge and Center) в Excel объединять-то ячейки умеет, а вот с текстом сложность – в живых остается только текст из верхней левой ячейки.
Чтобы объединение ячеек происходило с объединением текста (как в таблицах Word) придется использовать макрос. Для этого откройте редактор Visual Basic на вкладке Разработчик – Visual Basic (Developer – Visual Basic) или сочетанием клавиш Alt + F11 , вставим в нашу книгу новый программный модуль (меню Insert – Module) и скопируем туда текст такого простого макроса:
Теперь, если выделить несколько ячеек и запустить этот макрос с помощью сочетания клавиш Alt + F8 или кнопкой Макросы на вкладке Разработчик (Developer – Macros) , то Excel объединит выделенные ячейки в одну, слив туда же и текст через пробелы.
Источник: www.planetaexcel.ru
Строковые операторы VBA и операторы сравнения
Операторы сравнения
Оператор | Синтаксис | Описание |
= | A = B | Равенство: Если А равно В, то – True. Иначе – False |
Если А меньше В, то – True. Иначе – False | ||
Если А меньше или равно В, то – True. Иначе – False | ||
> | A > B | Больше: Если А больше В, то – True. Иначе – False |
>= | A >= B | Больше или равно: Если А больше или равно В, то – True. Иначе – False |
<> | A <> B | Не равно: Если А не равно В, то – True. Иначе – False |
Обычно операции сравнения используются в операторах организации циклов для принятия какого-либо решения о дальнейшем ходе выполнения операций.
Результатом любой операции сравнения является значение типа Boolean: True, False.
Если оба операнда в выражении сравнения имеют один и тот же тип данных, VBA выполняет простое сравнение для этого типа.
Если оба операнда в выражении сравнения имеют определенные типы и эти типы не являются совместимыми, VBA выдает сообщение об ошибке несовпадения типов.
Если один или оба операнда в выражении сравнения являются переменными типа Variant, VBA пытается преобразовать тип Variant в какой-либо совместимый тип.
Сравнение строк
При сравнении строк операторами отношения, VBA сравнивает каждую строку слева направо посимвольно.
В VBA одна строка равна другой только, когда обе строки содержат точно такие же символы в точно таком же порядке и обе строки имеют одну и ту же длину. Например, строки “абвгд” “абвгд ” ” абвгд” не равны между собой, т.к. VBA не игнорирует начальные или конечные символы пробела при сравнении строк.
Следует быть внимательным при сравнении строк переменной длины.
Двоичное и текстовое сравнение строк
Для сохранения текста компьютер использует схему, в которой каждый отображаемый символ имеет уникальный номер. Все буквы алфавита имеют свои уникальные номера. Обычно буквы верхнего регистра имеют меньшие номера, чем буквы нижнего регистра. Число, соответствующее определенной букве или символу, называется кодом символа.
При выполнении двоичного сравнения строковой информации VBA использует бинарный эквивалент числа для каждого символа. Такой метод сравнения называется двоичным или бинарным и является методом сравнения по умолчанию.
Т.к. буквы верхнего регистра имеют меньшие двоичные номера, буквы верхнего регистра располагаются в алфавитном порядке перед буквами нижнего регистра. Поэтому при двоичном сравнении строк, строка “АБВ” будем меньше строки “абв”.
При текстовом сравнении строк VBA не использует двоичный эквивалент символов, и не “различает” верхнего и нижнего регистра. В текстовом сравнении строка “абв” равна строке “АБВ”.
Для выбора метода сравнения строк используется директива Option Compare
Option Compare [Text | Binary]
Данная директива должна находиться в области объявления модуля.
Конкатенация строк
Присоединение одной строки к другой называется конкатенацией строк.
Конкатенацию строк обычно используют для формирования строк из различных источников в процедуре, чтобы создавать сообщение для вывода на экран. В VBA имеется два оператора для конкатенации строк.
Оператор конкатенации (&)
Оператор (&)в VBA используется только для конкатенации строк.
Операнд_1 & Операнд_2 [& Операнд_3..]
Операнд_N – любое допустимое строковое или численное выражение (которое преобразуется в строковое).
Тип данных результата конкатенации строк – String.
Если операнд в выражении конкатенации строк имеет значение Empty или Null, VBA интерпретирует этот операнд как строку нулевой длины (строка не содержащая символов).
Обратите внимание! Символ (&) операции конкатенации обязательно необходимо отделять пробелом от имени переменной, т.к. в противном случае VBA может интерпретировать этот символ как символ определения типа Long.
Оператор сложения в конкатенации строк
Для конкатенации строк можно также использовать оператор (+).
Этот оператор имеет такой же синтаксис и требования, как и оператор (&). Однако следует понимать, что в VBA основное предназначение оператора (+) – это арифметическое сложение. Поэтому, чтобы избежать двусмысленности чтения программного кода, для конкатенации строк настоятельно рекомендуется использовать именно оператор (&).
Приоритеты выполнения операций
Многие из выражений в программной коде являются сложными (составными), т.е. состоят из двух или более выражений.
При вычислении сложных выражений VBA следует следующим правилам:
- Части выражения, заключенные в круглые скобки, всегда вычисляются в первую очередь;
- Конкретные операции выполняются в зависимости от иерархии операторов (таблица ниже);
- При равенстве иерархии операторов, они вычисляются слева направо.
Оператор | Комментарии |
^ | Возведение в степень, высший приоритет |
– | Унарный минус |
* / | Умножение и деление имеют равные приоритеты |
MOD | |
+ – | Сложение и вычитание имеют равные приоритеты |
& | Конкатенация строк выполняется после арифметических операций перед операциями сравнения и логическими операциями |
= ><> | Все операции сравнения имеют равные приоритеты и выполняются слева направо. Для группирования операций надо пользоваться круглыми скобками |
NOT | |
AND | |
OR | |
XOR | |
EQV | |
IMP |
В начало страницы
В начало страницы
Источник: on-line-teaching.com
Excel конкатенация строк
В Excel 2019 появилась еще одна функция, которая умеет соединять текстовые строки. Она является усовершенствованной версией функции СЦЕП. В нее добавлена возможность задавать разделитель (1-ый аргумент) и указывать ей, как обрабатывать пустые ячейки (2-ой аргумент). Например, формула
соединит ячейки диапазона A2:A10, проставив после каждой запятую и пробел, но при этом пустые ячейки будут пропущены. Если заменить ИСТИНА на ЛОЖЬ, то пустые ячейки также буду учтены и отделены от других частей текста указанным в первом аргументе разделителем.
В Excel 2019 появилась еще одна функция, которая умеет соединять текстовые строки. Она является усовершенствованной версией функции СЦЕП. В нее добавлена возможность задавать разделитель (1-ый аргумент) и указывать ей, как обрабатывать пустые ячейки (2-ой аргумент). Например, формула
соединит ячейки диапазона A2:A10, проставив после каждой запятую и пробел, но при этом пустые ячейки будут пропущены. Если заменить ИСТИНА на ЛОЖЬ, то пустые ячейки также буду учтены и отделены от других частей текста указанным в первом аргументе разделителем.
Яндекс-деньги:41001419691823 | WMR:126292472390
Ответить
В Excel 2019 появилась еще одна функция, которая умеет соединять текстовые строки. Она является усовершенствованной версией функции СЦЕП. В нее добавлена возможность задавать разделитель (1-ый аргумент) и указывать ей, как обрабатывать пустые ячейки (2-ой аргумент). Например, формула
соединит ячейки диапазона A2:A10, проставив после каждой запятую и пробел, но при этом пустые ячейки будут пропущены. Если заменить ИСТИНА на ЛОЖЬ, то пустые ячейки также буду учтены и отделены от других частей текста указанным в первом аргументе разделителем.
Serge_007 | Дата: Среда, 15.01.2020, 13:44 | Сообщение № 5 | ||||||||||||||||||||||||||||||
Ответить |
|||||||||||||||||||||||||||||||
|