Если сцепить эксель

СЦЕПИТЬ (функция СЦЕПИТЬ)

Используйте функцию СЦЕПИТЬ, относящуюся к текстовым функциям, для объединения двух или нескольких текстовых строк в одну.

Важно: В Excel 2016, Excel Mobile и Excel в Интернете Эта функция была заменена функцией Concat. Функция СЦЕПИТЬ пока еще доступна для обратной совместимости, однако рекомендуем использовать вместо нее функцию СЦЕП. В последующих версиях Excel функция СЦЕПИТЬ может быть недоступна.

Ниже приведены примеры.

=СЦЕПИТЬ(“Популяция рек для “;A2;” “;A3;” составляет “;A4;” на километр.”)

Первый элемент для объединения. Это может быть текстовое значение, число или ссылка на ячейку.

Дополнительные текстовые элементы для объединения. Можно указать до 255 элементов и до 8 192 символов.

Примеры

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

=СЦЕПИТЬ(“Популяция рек для “;A2;” “;A3;” составляет “;A4;” на километр.”)

Создает предложение, объединяя данные в столбце А с остальным текстом. Результат: “Популяция рек для вида речная форель составляет 32 на километр”.

Объединяет строку в ячейке В2, пробел и значение в ячейке С2. Результат: “Виталий Токарев”.

Объединяет текст в ячейке C2, строку, состоящую из запятой и пробела, и значение в ячейке B2. Результат: “Виталий Токарев”.

Объединяет строку в ячейке B3, строку, состоящую из пробела, амперсанда и еще одного пробела, и значение в ячейке C3. Результат: Fourth & Pine.

Объединяет те же элементы, что и в предыдущем примере, но с помощью оператора & (амперсанд) вместо функции СЦЕПИТЬ. Результат: Fourth & Pine.

Распространенные неполадки

Кавычки отображаются в строке результата.

Используйте точку с запятой для разделения текстовых элементов. Например: Excel отобразит результат функции =СЦЕПИТЬ (“Привет, “”мир!”) как “Привет,”мир!” с лишней кавычкой, так как пропущена точка с запятой между текстовыми аргументами.

Числа не нужно заключать в кавычки.

Слова расположены впритык друг к другу.

Если не поместить пробелы между текстовыми элементами, в строке результата они будут отображаться слитно. Добавьте пробелы в формулу с функцией СЦЕПИТЬ. Это можно сделать двумя способами.

Добавьте двойные кавычки с пробелом между ними (” “). Например: =СЦЕПИТЬ(“Привет,”; ” “; “мир!”).

Добавьте пробел после текстового аргумента. Например: =СЦЕПИТЬ(“Привет, “; “мир!”). К строке “Привет,” добавлен пробел.

Ошибка #ИМЯ? отображается вместо ожидаемого результата.

Ошибка #ИМЯ? обычно означает, что для текстового аргумента не хватает кавычек.

Рекомендации

Вместо функции СЦЕПИТЬ используйте знак & (амперсанд).

С помощью оператора & можно объединять текстовые элементы, не прибегая к функции.

Например, функция = a1 & B1 возвращает то же значение, что = СЦЕПИТЬ (A1; B1). Во многих случаях воспользоваться оператором амперсанда проще и быстрее, чем создавать строки с помощью функции СЦЕПИТЬ.

Для объединения и форматирования строк используйте функцию ТЕКСТ.

Функция ТЕКСТ преобразует числовое значение в текст и объединяет числа с текстом или символами.

Предположим, что ячейка A1 содержит число 23,5. Чтобы отформатировать число как сумму в рублях, можно использовать следующую формулу:

Дополнительные сведения

Для объединения и форматирования строк используйте функцию ТЕКСТ.

Ознакомьтесь с дополнительными сведениями об использовании операторов вычислений.

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Источник: support.office.com

Работа с функцией СЦЕПИТЬ в Microsoft Excel

Одной из интересных функций приложения Microsoft Excel является функция СЦЕПИТЬ. Её основной задачей является соединение содержимого двух или нескольких ячеек в одной. Данный оператор помогает решить некоторые задачи, которые с помощью других инструментов воплотить невозможно. Например, с его помощью удобно производить процедуру объединения ячеек без потерь. Рассмотрим возможности данной функции и нюансы её применения.

Применение оператора СЦЕПИТЬ

Функция СЦЕПИТЬ относится к группе текстовых операторов Excel. Её основная задача — объединение в одной ячейке содержимого нескольких ячеек, а также отдельных символов. Начиная с версии Excel 2016, вместо данного оператора используется функция СЦЕП. Но в целях сохранения обратной совместимости оператор СЦЕПИТЬ тоже оставлен, и его можно использовать наравне со СЦЕП.

Синтаксис этого оператора выглядит следующим образом:

В качестве аргументов могут выступать, как текст, так и ссылки на ячейки, которые его содержат. Количество аргументов может варьироваться от 1 до 255 включительно.

Способ 1: объединение данных в ячейках

Как известно, обычное объединение ячеек в Эксель приводит к потере данных. Сохраняются только данные расположенные в верхнем левом элементе. Для того, чтобы объединить содержимое двух и более ячеек в Эксель без потерь можно применить функцию СЦЕПИТЬ.

  1. Выделяем ячейку, в которой планируем разместить объединенные данные. Кликаем на кнопку «Вставить функцию». Она имеет вид пиктограммы и размещена слева от строки формул.

Открывается Мастер функций. В категории «Текстовые» или «Полный алфавитный перечень» ищем оператор «СЦЕПИТЬ». Выделяем это наименование и жмем на кнопку «OK».

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

Устанавливаем курсор в первое поле окна. Затем выделяем ссылку на листе, в которой содержатся данные, нужные для объединения. После того, как координаты отобразились в окошке, аналогичным образом поступаем со вторым полем. Соответственно выделяем другую ячейку. Подобную операцию проделываем, пока координаты всех ячеек, которые нужно объединить, не будут внесены в окно аргументов функции. После этого жмем на кнопку «OK».

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

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

    1. Выполняем задачу по тому же алгоритму, который описан выше.
    2. Двойным щелчком левой кнопки мыши по ячейке с формулой активируем её для редактирования.

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

  • Для того, чтобы вывести результат на экран, жмем на кнопку Enter.
  • Как видим, на месте вставки пробелов с кавычками в ячейке появились разделения между словами.

    Способ 3: добавление пробела через окно аргументов

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

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

    Выполняем те же действия, что и при первом способе применения функции СЦЕПИТЬ, вплоть до открытия окна аргументов оператора. Добавляем значение первой ячейки с данными в поле окна, как это уже было описано ранее. Затем устанавливаем курсор во второе поле, и выделяем ту пустую ячейку с пробелом, о которой шла речь ранее. Появляется ссылка в поле окна аргументов. Для ускорения процесса можно её скопировать, выделив и нажав сочетание клавиш Ctrl+C.

  • Затем добавляем ссылку на следующий элемент, который нужно добавить. В очередном поле опять добавляем ссылку на пустую ячейку. Так как мы скопировали её адрес, то можно установить курсор в поле и нажать сочетание клавиш Ctrl+V. Координаты будут вставлены. Таким способом чередуем поля с адресами элементов и пустой ячейки. После того, как все данные внесены, жмем на кнопку «OK».
  • Как видим, после этого в целевой ячейке образовалась объединенная запись, включающая содержимое всех элементов, но с пробелами между каждым словом.

    Читайте также:  Как сделать график в экселе

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

    Способ 4: объединение колонок

    С помощью функции СЦЕПИТЬ можно быстро объединять данные нескольких колонок в одну.

      С ячейками первой строки объединяемых колонок проделываем на выбор те действия, которые указаны во втором и третьем способе применения аргумента. Правда, если вы решили воспользоваться способом с пустой ячейкой, то ссылку на неё нужно будет сделать абсолютной. Для этого, перед каждым знаком координат по горизонтали и вертикали этой ячейки ставим знак доллара ($). Естественно, что лучше всего это сделать в самом начале, чтобы в другие поля, где содержится этот адрес, пользователь мог копировать его, как содержащий постоянные абсолютные ссылки. В остальных полях оставляем относительные ссылки. Как всегда, после выполнения процедуры, жмем на кнопку «OK».

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

  • После выполнения этой процедуры данные в указанных столбцах будут объединены в одном столбце.
  • Способ 5: добавление дополнительных символов

    Функцию СЦЕПИТЬ можно также использовать для добавления дополнительных символов и выражений, которых не было в первоначальном объединяемом диапазоне. Более того, можно с помощью данной функции внедрять и другие операторы.

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

  • Как видим, после этого действия к объединенным данным был добавлен и текстовый материал.
  • Оператор СЦЕПИТЬ – единственная возможность объединения ячеек без потерь в Excel. Кроме того, с его помощью можно соединять целые столбцы, добавлять текстовые значения, проводить некоторые другие манипуляции. Знание алгоритма работы с этой функцией позволит облегчить решение многих вопросов для пользователя программы.

    Отблагодарите автора, поделитесь статьей в социальных сетях.

    Источник: lumpics.ru

    Функция СЦЕПИТЬ в Excel: объединение содержимого ячеек

    Функция СЦЕПИТЬ в Эксель позволяет объединить содержимое двух и более ячеек в одну общую, что делает ее одним из самых полезных и необходимых инструментов программы, которым непременно нужно овладеть для эффективной работы. Давайте посмотрим, как работать с данной функцией.

    Описание и синтаксис функции СЦЕПИТЬ

    Данная функция начиная с Excel 2016 сменила название на “СЦЕП”, однако, для тех, кто привык к старому наименованию (“СЦЕПИТЬ”), оператор под этим названием также доступен в программе. СЦЕП и СЦЕПИТЬ абсолютно взаимозаменяемы и выполняют одну и ту же операцию по объединению содержимого выбранных ячеек в одну общую.

    Формула функций выглядит так:

    =СЦЕП(текст1;текст2;. ) или =СЦЕПИТЬ(текст1;текст2;. )

    Максимальное количество аргументов – 255.

    Вставка и настройка функции

    Как мы знаем, при объединении нескольких ячеек в одну, содержимое всех элементов за исключением самой верхней левой стирается. Чтобы этого не происходило, нужно использовать функцию СЦЕПИТЬ (СЦЕП).

    1. Для начала определяемся с ячейкой, в которой планируем объединить данные из других. Переходим в нее (выделяем) и щелкаем по значку “Вставить функцию” (fx).
    2. В открывшемся окне вставки функции выбираем категорию “Текстовые” (или “Полный алфавитный перечень”), отмечаем строку “СЦЕП” (или “СЦЕПИТЬ”) и кликаем OK.
    3. На экране появится окно, в котором нужно заполнить аргументы функции, в качестве которых могут быть указаны как конкретные значения, так и ссылки на ячейки. Причем последние можно указать как вручную, так и просто кликнув по нужным ячейкам в самой таблице (при это курсор должен быть установлен в поле для ввода значения напротив соответствующего аргумента). В нашем случае делаем следующее:
      • находясь в поле “Текст1” щелкаем по ячейке (A2), значение которой будет стоять на первом месте в объединенной ячейке;
      • кликаем по полю “Текст2”, где ставим запятую и пробел (“, “), которые будут служит разделителем между содержимыми ячеек, указанных в аргументах “Текст1” и “Текст3” (появится сразу же после того, как мы приступим к заполнению аргумента “Текст2”). Можно на свое усмотрение указывать любые символы: пробел, знаки препинания, текстовые или числовые значения и т.д.
      • переходим в поле “Текст3” и кликаем по следующей ячейке, содержимое которой нужно добавить в общую ячейку (в нашем случае – это B2).
      • аналогичным образом заполняем все оставшиеся аргументы, после чего жмем кнопку OK. При этом увидеть предварительный результат можно в нижней левой части окна аргументов.
    4. Все готово, нам удалось объединить содержимое всех выбранных ячеек в одну общую.
    5. Выполнять действия выше для остальных ячеек столбца не нужно. Просто наводим указатель мыши на правый нижний угол ячейки с результатом, и, после того как он сменит вид на небольшой черный плюсик, зажав левую кнопку мыши тянем его вниз до нижней строки столбца (или до строки, для которой требуется выполнить аналогичные действия).
    6. Таким образом, получаем заполненный столбец с новыми наименованиями, включающими данные по размеру и полу.

    Аргументы функции без разделителей

    Если разделители между содержимыми ячеек не нужны, в этом случае в значении каждого аргумента сразу указываем адреса требуемых элементов.

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

    Указание разделителя в отдельной ячейке

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

    Например, мы добавляем запятую и пробел (“, “) в ячейку B16.

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

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

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

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

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

    Таким образом, функция СЦЕП (СЦЕПИТЬ) предлагает большую вариативность действий, что позволяет наилучшим образом представить объединенные данные.

    Редактирование функции

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

    Способ 1: изменения в окне аргументов

    Перейти к редактированию функции можно, просто нажав на кнопку “Вставить функцию” (fx), которая находится слева от строки формул. При этом предварительно нужно выбрать ячейку, содержащую функцию.

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

    Мы получим результат с учетом скорректированных данных.

    Способ 2: ручная корректировка формулы

    Альтернативный метод изменения аргументов функции – ручная корректировка формулы. Перейти в режим редактирования можно двумя по-разному:

    1. Выделяем ячейку с функцией, затем щелкаем по строке формул и вносим в ней изменения.
    2. Двойным щелчком мыши по ячейке с формулой активируем режим редактирования и корректируем формулу, непосредственно, в самой ячейке.

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

    • адреса ячеек пишутся без кавычек;
    • перечисление аргументов – через знак “;”
    • если в качестве аргумента используется символ или текст, наличие кавычек с двух сторон указанного значения обязательно.
    Читайте также:  Как в excel сделать прозрачным рисунок

    Заключение

    Благодаря умению пользоваться функцией СЦЕП (СЦЕПИТЬ) можно автоматизировать процесс объединения содержимого разных ячеек в одну общую, что в некоторых случаях, является единственным условием успешного выполнения поставленной задачи. Поэтому очень важно научиться правильно работать с данной функцией в программе Эксель.

    Источник: microexcel.ru

    Склеивание текста по условию

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

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

    Другими словами, нам нужен инструмент, который будет склеивать (сцеплять) текст по условию – аналог функции СУММЕСЛИ (SUMIF) , но для текста.

    Способ 0. Формулой

    Не очень изящный, зато самый простой способ. Можно написать несложную формулу, которая будет проверять отличается ли компания в очередной строке от предыдущей. Если не отличается, то приклеиваем через запятую очередной адрес. Если отличается, то “сбрасываем” накопленное, начиная заново:

    Минусы такого подхода очевидны: из всех ячеек полученного дополнительного столбца нам нужны только последние по каждой компании (желтые). Если список большой, то чтобы их быстро отобрать придется добавить еще один столбец, использующий функцию ДЛСТР (LEN) , проверяющий длину накопленных строк:

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

    Способ 1. Макрофункция склейки по одному условию

    Если исходный список не отсортирован по компаниям, то приведенная выше простая формула не работает, но можно легко выкрутиться с помощью небольшой пользовательской функции на VBA. Откройте редактор Visual Basic нажатием на сочетание клавиш Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer) . В открывшемся окне вставьте новый пустой модуль через меню Insert – Module и скопируйте туда текст нашей функции:

    Если теперь вернуться в Microsoft Excel, то в списке функций (кнопка fx в строке формул или вкладка Формулы – Вставить функцию) можно будет найти нашу функцию MergeIf в категории Определенные пользователем (User Defined) . Аргументы у функции следующие:

    Способ 2. Сцепить текст по неточному условию

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

    Поддерживаются стандартные спецсимволы подстановки:

    • звездочка (*) – обозначает любое количество любых символов (в т.ч. и их отсутствие)
    • вопросительный знак (?) – обозначает один любой символ
    • решетка (#) – обозначает одну любую цифру (0-9)

    По умолчанию оператор Like регистрочувствительный, т.е. понимает, например, “Орион” и “оРиОн” как разные компании. Чтобы не учитывать регистр можно добавить в самое начало модуля в редакторе Visual Basic строчку Option Compare Text, которая переключит Like в режим, когда он невосприимчив к регистру.

    Таким образом можно составлять весьма сложные маски для проверки условий, например:

    • ?1##??777RUS – выборка по всем автомобильным номерам 777 региона, начинающимся с 1
    • ООО* – все компании, название которых начинается на ООО
    • ##7## – все товары с пятизначным цифровым кодом, где третья цифра 7
    • . – все названия из пяти букв и т.д.

    Способ 3. Макрофункция склейки текста по двум условиям

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

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

    Способ 4. Группировка и склейка в Power Query

    Решить проблему можно и без программирования на VBA, если использовать бесплатную надстройку Power Query. Для Excel 2010-2013 ее можно скачать здесь, а в Excel 2016 она уже встроена по умолчанию. Последовательность действий будет следующей:

    Power Query не умеет работать с обычными таблицами, поэтому первым шагом превратим нашу таблицу в “умную”. Для этого ее нужно выделить и нажать сочетание Ctrl + T или выбрать на вкладке Главная – Форматировать как таблицу (Home – Format as Table) . На появившейся затем вкладке Конструктор (Design) можно задать имя таблицы (я оставил стандартное Таблица1):

    Теперь загрузим нашу таблицу в надстройку Power Query. Для этого на вкладке Данные (если у вас Excel 2016) или на вкладке Power Query (если у вас Excel 2010-2013) жмем Из таблицы (Data – From Table) :

    В открывшемся окне редактора запросов выделяем щелчком по заголовку столбец Компания и сверху жмем кнопку Группировать (Group By) . Вводим имя нового столбца и тип операции в группировке – Все строки (All Rows) :

    Жмем ОК и получаем для каждой компании мини-таблицу сгруппированных значений. Содержимое таблиц хорошо видно, если щелкать левой кнопкой мыши в белый фон ячеек (не в текст!) в получившемся столбце:

    Теперь добавим еще один столбец, где с помощью функции склеим через запятую содержимое столбцов Адрес в каждой из мини-таблиц. Для этого на вкладке Добавить столбец жмем Пользовательский столбец (Add column – Custom column) и в появившемся окне вводим имя нового столбца и формулу сцепки на встроенном в Power Query языке М:

    Обратите внимание, что все М-функции регистрочувствительные (в отличие от Excel). После нажатия на ОК получаем новый столбец со склееными адресами:

    Осталось удалить ненужный уже столбец ТаблАдресов (правой кнопкой мыши по заголовку – Удалить столбец) и выгрузить результаты на лист, нажав на вкладке Главная – Закрыть и загрузить (Home – Close and load) :

    Важный нюанс : в отличие от предыдущих способов (функций), таблицы из Power Query не обновляются автоматически. Если в будущем произойдут какие-либо изменения в исходных данных, то нужно будет щелкнуть правой кнопкой в любое место таблицы результатов и выбрать команду Обновить (Refresh) .

    Источник: www.planetaexcel.ru

    Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли

    Все чаще вижу на разных форумах вопросы типа: Есть таблица, в одном столбце фамилии, в другом оценки(виды работ и т.д.) . Как сцепить в одной ячейке для каждой фамилии только принадлежащие ей оценки? Стандартными функциями это сделать весьма проблематично, т.к. заранее неизвестно сколько будет этих оценок и фамилий. Или собрать в одну ячейку через запятую фамилии всех сотрудников одного отдела, но все сотрудники идут вразнобой. Т.е. из такой таблицы:

    Получить такую:

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

    ‘————————————————————————————— ‘ Author : The_Prist(Щербаков Дмитрий) ‘ Профессиональная разработка приложений для MS Office любой сложности ‘ Проведение тренингов по MS Excel ‘ http://www.excel-vba.ru ‘ Purpose: ‘————————————————————————————— Function СцепитьЕсли(ByRef Диапазон As Range, ByVal Критерий As String, ByRef Диапазон_сцепления As Range, Optional Разделитель As String = ” “, Optional БезПовторов As Boolean = False) As String Dim li As Long, sStr As String, avItem, avDateArr(), avRezArr(), lUBnd As Long If Диапазон.Count > 1 Then avDateArr = Intersect(Диапазон, Диапазон.Parent.UsedRange).Value avRezArr = Intersect(Диапазон_сцепления, Диапазон_сцепления.Parent.UsedRange).Value If Диапазон.Rows.Count = 1 Then avDateArr = Application.Transpose(avDateArr) avRezArr = Application.Transpose(avRezArr) End If Else ReDim avDateArr(1, 1): ReDim avRezArr(1, 1) avDateArr(1, 1) = Диапазон.Value avRezArr(1, 1) = Диапазон_сцепления.Value End If lUBnd = UBound(avDateArr, 1) ‘Определяем вхождение операторов сравнения в Критерий Dim objRegExp As Object, objMatches As Object Set objRegExp = CreateObject(“VBScript.RegExp”) objRegExp.Global = False: objRegExp.Pattern = “=|<>|=>|>=| | 0 Then Dim sStrMatch As String sStrMatch = objMatches.Item(0) Критерий = Replace(Replace(Критерий, sStrMatch, “”, 1, 1), Chr(34), “”, 1, 2) If IsNumeric(Критерий) And Критерий <> “” Then Критерий = CDbl(Критерий) End If Select Case sStrMatch Case “=” For li = 1 To lUBnd If avDateArr(li, 1) = Критерий Then If Trim(avRezArr(li, 1)) <> “” Then _ sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & avRezArr(li, 1) End If Next li Case “<>” For li = 1 To lUBnd If avDateArr(li, 1) <> Критерий Then If Trim(avRezArr(li, 1)) <> “” Then _ sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & avRezArr(li, 1) End If Next li Case “>=”, “=>” For li = 1 To lUBnd If avDateArr(li, 1) >= Критерий Then If Trim(avRezArr(li, 1)) <> “” Then _ sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & avRezArr(li, 1) End If Next li Case ” “” Then _ sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & avRezArr(li, 1) End If Next li Case “>” For li = 1 To lUBnd If avDateArr(li, 1) > Критерий Then If Trim(avRezArr(li, 1)) <> “” Then _ sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & avRezArr(li, 1) End If Next li Case ” “” Then _ sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & avRezArr(li, 1) End If Next li End Select Else ‘Если нет вхождения For li = 1 To lUBnd If avDateArr(li, 1) Like Критерий Then If Trim(avRezArr(li, 1)) <> “” Then _ sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & avRezArr(li, 1) End If Next li End If If БезПовторов Then Dim oDict As Object, sTmpStr Set oDict = CreateObject(“Scripting.Dictionary”) sTmpStr = Split(sStr, Разделитель) On Error Resume Next For li = LBound(sTmpStr) To UBound(sTmpStr) oDict.Add sTmpStr(li), sTmpStr(li) Next li sStr = “” sTmpStr = oDict.keys For li = LBound(sTmpStr) To UBound(sTmpStr) sStr = sStr & IIf(sStr <> “”, Разделитель, “”) & sTmpStr(li) Next li End If СцепитьЕсли = sStr End Function

    Читайте также:  Как в excel сделать сложную таблицу

    Для применения функции в своем файле достаточно создать стандартный модуль (о том как создать стандартный модуль: Что такое модуль? Какие бывают модули?) и просто вставить приведенный код. После этого в диспетчере функций появиться новая категория (если до этого её не было) – Определенные пользователем (User Defined) . В ней эта функция – СцепитьЕсли.
    Синтаксис:
    =СцепитьЕсли( B5:B18 ; B5 ; C5:C18 ;”-“;0)

    По принципу работы функция похожа на стандартную СУММЕСЛИ. Указывается диапазон значений(где просматривать значение), критерий и диапазон значений для сцепления. Символ для разделения слов указывать необязательно.

    Диапазон (B5:B18) – диапазон, в котором искать критерий(указывается один столбец)

    Критерий (B5) – критерий. Значение, на основании которого необходимо сцеплять значения. Может содержать символы подстановки – * и ? и символы сравнения ( <>“”, 0, “<>“&A1 и т.п.). Просматривается Диапазон. При совпадении значения ячейки в Диапазоне значение из Диапазона_Сцепления добавляется к результату с выбранным разделителем.

    Диапазон_сцепления (C5:C18) – из этого диапазона берется значение для сцепления, если значение в аргументе Диапазон совпадает с аргументом Критерий(указывается один столбец). Если в Диапазоне значение 5-ой строки совпадает с критерием, то из Диапазона_Сцепления будет взято так же значение из 5-ой строк этого диапазона и сцеплено с результатом.

    Разделитель (“-“) – По умолчанию пробел, но можно задать любой другой символ или группу символов.

    БезПовторов – если указать 1 или ИСТИНА, то в результате получится строка, в которой нет одинаковых значений. Если указать 0 или ЛОЖЬ, то будут выведены все значения. По умолчанию значение ЛОЖЬ.

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

    Пример СцепитьЕсли.xls (68,0 KiB, 10 683 скачиваний)

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

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

    Макрос работает не корректно, в частности не распознает четырёхзначные значения (например поле «Все сотрудники, с окладом меньше или равным 15000» не указывает значение «Петрова Вера», пока вместо её оклада «6000» не вбить значение «06000»

    Источник: www.excel-vba.ru

    Функция СЦЕПИТЬ в Excel: синтаксис и примеры использования

    Чтобы объединить значения (текстовые, цифровые) из разных ячеек в одну, используется функция СЦЕПИТЬ. Ее аналог – & (амперсанд). Знак справляется с простейшими задачами. Но для объединения множества строк не подходит.

    Синтаксис функции СЦЕПИТЬ

    Функция входит в группу «текстовые». Синтаксис: (текст 1; текст 2;…). Можно включить до 255 текстовых строк. Первый аргумент – «текст 1» – является обязательным. Любые аргументы можно указать в виде текста, цифр или ссылок на ячейки.

    Общие правила использования функции СЦЕПИТЬ:

    1. Для разделения аргументов применяется точка с запятой. Пропуск или использование других знаков приведет к отображению в ячейке с результатом кавычек.
    2. Текстовые аргументы обязательно заключать в кавычки. В противном случае появляется ошибка – #ИМЯ? Числа и ссылки на ячейки – не нужно.
    3. Чтобы соединяемые элементы в строке результата отобразились с пробелом, пробелы нужно добавлять в формулу с функцией. С помощью двойных кавычек с пробелом внутри (“ “) или с помощью пробела после текстового аргумента (“Иванов ”;…).

    

    Как пользоваться функцией СЦЕПИТЬ в Excel

    Начнем с простейших примеров.

    Данные для объединения:

    Ставим курсор в ячейку Е2 и вызываем мастер функций (кнопка fx). В категории «Текстовые» находим функцию СЦЕПИТЬ. Аргументы – ссылки на ячейки А2, В2, С2 и пробелы:

    Результат объединения значений в ячейках:

    Такой же результат получим с помощью амперсанда:

    Один из аргументов – текст. Формула: =СЦЕПИТЬ(“слесарь”; ” “;A2;” “;B2;” “;C2). Результат:

    И с более сложными задачами справится функция СЦЕПИТЬ в Excel. Примеры:

    1. Соединим текст с датой. Данные находятся в отдельных ячейках. Для столбца «Дата» установлен формат «Дата». Если использовать только функцию СЦЕПИТЬ, дата отобразится в числовом формате. Поэтому добавим функцию ТЕКСТ для форматирования чисел. Формула: Второй аргумент функции ТЕКСТ – формат представления даты. Результат:
    2. Соединим сразу много ячеек в строке. Если писать формулу с функцией СЦЕПИТЬ, получится долго и малоэффективно. Используем маленькую хитрость. Вот наша строка со значениями в отдельных ячейках. В ячейку Н1 ставим знак «равно». Выделяем диапазон со значениями А1:F1. Вводим амперсанд & и пробел “ “. Жмем F9. В строке формул появится формула массива. Ставим курсор в строку формул после знака «равно». Пишем название функции. Фигурные скобки заменяем на круглые и жмем ВВОД. Получаем нужный результат.
    3. Соединим значения через косую черточку («-», «&» и т.п.). Формула будет выглядеть так: = СЦЕПИТЬ (ссылка на ячейку 1; «/»; ссылка на ячейку 2).
    4. Соединим несколько значений в столбце. Функция подходит для значений в строках. Описанный выше способ с формулой массива тоже не сработает.

    Преобразуем вертикальный диапазон в горизонтальный с помощью функции ТРАНСП. А затем воспользуемся формулой массива для быстрого соединения значений. В ячейку В1 ставим знак «равно». Пишем ТРАНСП. Указываем диапазон А1:А6. Вводим & и пробел (« »). Жмем F9.

    Теперь преобразуем формулу массива, добавив функцию и заменив скобки.

    Обратная функция СЦЕПИТЬ в Excel

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

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

    1. Извлечем первое слово из строки, применив функцию ЛЕВСИМВ. Аргументы – «текст» (ссылка на строку с искомым значением), «количество знаков» (число символов, которые нужно извлечь).
    2. Извлечем последнее слово из строки с помощью функции ПРАВСИМВ. Синтаксис похожий (как в предыдущем примере). Только количество знаков считается с конца.
    3. Извлечем из записи в строке фамилию (второе слово) с помощью функции ПСТР. Аргументы – «текст» (ссылка на строку), «начальная позиция» (номер символа, с которого программа начнет считать число знаков); «количество знаков». В примере: Е2 – «текст», с 9 знака функция вернет 8 символов.

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

    Источник: exceltable.com