Excel все значения через запятую

Вывод значений через запятую из таблицы

azZazZello

Дата: Среда, 15.07.2015, 07:18 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день!
Есть задачка, вроде простая, но синтаксис никак не могу сопоставить правильно.
Суть такая: есть огромная таблица, в которой указаны МОЛы, которых ведут БУХгалтера (для примера сократил её, но искомое значение может повторятся много раз). Требуется получить результат через запятую в другой таблице.
Не могу понять как правильно из массива получить данные через запятую. ВПР выдает только 1 значение :(

 

Ответить

Nic70y

Дата: Среда, 15.07.2015, 07:35 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

может так сойдет?
массивная:

Код

=ЕСЛИОШИБКА(ИНДЕКС($B$2:$B$11;НАИМЕНЬШИЙ(ЕСЛИ($F2=$A$2:$A$11;СТРОКА($1:$10));СТОЛБЕЦ(A1)));»»)


ЮMoney 41001841029809

 

Ответить

azZazZello

Дата: Среда, 15.07.2015, 07:42 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Да это просто праздник какой-то!!! Такой вариант тоже имеет право на жизнь!!! Если что, через СЦЕПИТЬ потом допинаю… Спасибо большое! hands

 

Ответить

azZazZello

Дата: Среда, 15.07.2015, 08:45 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Чего то логику выражения понять не могу. Можете по пунктам разложить?
Непонятная часть выражения:

Код

НАИМЕНЬШИЙ(ЕСЛИ($F2=$A$2:$A$11;СТРОКА($1:$10));СТОЛБЕЦ(D1))

 

Ответить

Nic70y

Дата: Среда, 15.07.2015, 09:14 |
Сообщение № 5

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

ЕСЛИ($F2=$A$2:$A$11 соот. строки массива на примере G2 это массив {ЛОЖЬ:ЛОЖЬ:3:4:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}
НАИМЕНЬШИЙ( … СТОЛБЕЦ(A1))это наименьший 1 из массива = 3; H2 => СТОЛБЕЦ(B1) это наименьший 2 из массива = 4


ЮMoney 41001841029809

Сообщение отредактировал Nic70yСреда, 15.07.2015, 09:15

 

Ответить

ShAM

Дата: Среда, 15.07.2015, 09:52 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 1347


Репутация:

249

±

Замечаний:
0% ±


Excel 2010

 

Ответить

azZazZello

Дата: Среда, 15.07.2015, 10:05 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Всё, разобрался. Всем спасибо!
Пошёл дальше читать матчасть deal

 

Ответить

_Boroda_

Дата: Среда, 15.07.2015, 10:06 |
Сообщение № 8

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Еще вариант немассивной формулой

Код

=ЕСЛИОШИБКА(ПРОСМОТР(;-1/($F2=$A$2:$A$11)/ЕНД(ПОИСКПОЗ($B$2:$B$11;$F2:F2;));$B$2:$B$11);»»)

Объяснялку смотрите здесь


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Rioran

Дата: Среда, 15.07.2015, 10:07 |
Сообщение № 9

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

azZazZello, здравствуйте.

Ради спортивного интереса предлагаю решение пользовательской функцией.

Во вложении пример использования. Макросы должны быть разрешены. Первые два аргумента должны быть столбцами, 3-й аргумент — проверочное имя. Аргументы функции:

Код

=СЦЕПИТЬЕСЛИ( [«Кого будем сцеплять»] ; [«Диапазон для проверки критерия»] ; [«Критерий»] )

Код функции:

[vba]

Код

Function СЦЕПИТЬЕСЛИ$(Data As Range, Condition As Range, Target$)
      Dim i As Long, j As Long, ArrX() As String, rNum As Long
      rNum = Data.Rows.Count
      If rNum <> Condition.Rows.Count Then
          СЦЕПИТЬЕСЛИ = «- Укажите равные диапазоны -»
          Exit Function
      End If
      ReDim ArrX(rNum)
      For i = 1 To rNum
          If Condition.Cells(i, 1).Value = Target Then
              ArrX(j) = Data.Cells(i, 1).Value
              j = j + 1
          End If
      Next i
      ReDim Preserve ArrX(j — 1)
      СЦЕПИТЬЕСЛИ = Join(ArrX, «, «)
End Function

[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranСреда, 15.07.2015, 10:10

 

Ответить

sv2014

Дата: Среда, 15.07.2015, 11:15 |
Сообщение № 10

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

azZazZello, добрый день,
могу предложить вам макрос,который решает ваш вопрос при любом количестве ваших данных
в столбце F

[vba]

Код

Sub incert()
   Dim i&, j&, n&, s$
  n = Range(«F» & Cells.Rows.Count).End(xlUp).Row
For j = 2 To n
    s = «»
    For i = 2 To 11
      If Range(«A» & i) = Range(«F» & j) Then
          s = s & «,» & Range(«B» & i)
      End If
    Next i
     Range(«G» & j) = Right(s, Len(s) — 1)
    Next j
  End Sub

[/vba]

 

Ответить

sv2014

Дата: Среда, 15.07.2015, 11:43 |
Сообщение № 11

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

azZazZello, или такой же вариант с пробелом при необходимости.
На вашем файле- примере проверил.

[vba]

Код

Sub incert1()
   Dim i&, j&, n&, s$
  n = Range(«F» & Cells.Rows.Count).End(xlUp).Row
For j = 2 To n
    s = «»
    For i = 2 To 11
      If Range(«A» & i) = Range(«F» & j) Then
          s = s & «,» & Chr(32) & Range(«B» & i)
      End If
    Next i
     Range(«G» & j) = Right(s, Len(s) — 1)
    Next j
  End Sub

[/vba]

 

Ответить

Alekc7711

Дата: Суббота, 22.02.2020, 02:05 |
Сообщение № 12

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

 

Ответить

Alekc7711

Дата: Суббота, 22.02.2020, 02:30 |
Сообщение № 13

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

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

Сообщение отредактировал PelenaСуббота, 22.02.2020, 08:05

 

Ответить

Pelena

Дата: Суббота, 22.02.2020, 08:04 |
Сообщение № 14

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Попробуйте в этой строке поставить проверку
[vba]

Код

If Len(s)>1 Then Range(«G» & j) = Right(s, Len(s) — 1)

[/vba]


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

solniechnaya

Дата: Воскресенье, 05.03.2023, 09:57 |
Сообщение № 15

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


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

Пример во вложении

С Уважением…
Solniechnaya@gmail.com

 

Ответить

jakim

Дата: Воскресенье, 05.03.2023, 10:23 |
Сообщение № 16

Группа: Друзья

Ранг: Старожил

Сообщений: 1149


Репутация:

305

±

Замечаний:
0% ±


Excel 2010

Power Query

[vba]

Код

let
    Source = Excel.CurrentWorkbook(){[Name=»Table1″]}[Content],
    #»Grouped Rows» = Table.Group(Source, {«mol»}, {{«Count», each _, type table}}),
    #»Added Custom» = Table.AddColumn(#»Grouped Rows», «Custom», each [Count][buh]),
    #»Removed Columns» = Table.RemoveColumns(#»Added Custom»,{«Count»}),
    #»Extracted Values» = Table.TransformColumns(#»Removed Columns», {«Custom», each Text.Combine(List.Transform(_, Text.From), «, «), type text})
in
    #»Extracted Values»

[/vba]

К сообщению приложен файл:

6945041.xlsx
(16.5 Kb)

 

Ответить

jakim

Дата: Воскресенье, 05.03.2023, 10:46 |
Сообщение № 17

Группа: Друзья

Ранг: Старожил

Сообщений: 1149


Репутация:

305

±

Замечаний:
0% ±


Excel 2010

Исправляю ошибку, т.к. мой ответ был сделан по первому посту.

[vba]

Код

let
    Source = Excel.CurrentWorkbook(){[Name=»Table1″]}[Content],
    #»Changed Type» = Table.TransformColumnTypes(Source,{{«ном-стр», Int64.Type}, {«mol», type text}, {«buh», type text}}),
    #»Grouped Rows» = Table.Group(#»Changed Type», {«mol», «buh»}, {{«Count», each Table.RowCount(_), type number}}),
    #»Pivoted Column» = Table.Pivot(#»Grouped Rows», List.Distinct(#»Grouped Rows»[buh]), «buh», «Count»)
in
    #»Pivoted Column»

[/vba]

 

Ответить

jakim

Дата: Воскресенье, 05.03.2023, 12:13 |
Сообщение № 18

Группа: Друзья

Ранг: Старожил

Сообщений: 1149


Репутация:

305

±

Замечаний:
0% ±


Excel 2010

Последний вариант

[vba]

Код

let
    Source = Excel.CurrentWorkbook(){[Name=»Table1″]}[Content],
    #»Grouped Rows» = Table.Group(Source, {«mol», «buh»}, {{«Count», each _, type table}}),
    #»Added Custom» = Table.AddColumn(#»Grouped Rows», «Custom», each [Count][номстр]),
    #»Removed Columns» = Table.RemoveColumns(#»Added Custom»,{«Count»}),
    #»Extracted Values» = Table.TransformColumns(#»Removed Columns», {«Custom», each Text.Combine(List.Transform(_, Text.From), «, «), type text}),
    #»Pivoted Column» = Table.Pivot(#»Extracted Values», List.Distinct(#»Extracted Values»[buh]), «buh», «Custom»)
in
    #»Pivoted Column»

[/vba]

К сообщению приложен файл:

1724779.xlsx
(22.4 Kb)

 

Ответить

прохожий2019

Дата: Воскресенье, 05.03.2023, 12:52 |
Сообщение № 19

Группа: Проверенные

Ранг: Старожил

Сообщений: 1037


Репутация:

292

±

Замечаний:
0% ±


365 Beta Channel


[vba]

Код

let
    from = Excel.CurrentWorkbook(){[Name=»Table1″]}[Content],
    gr = Table.Group(from, {«mol», «buh»}, {«tmp», (t)=>Text.Combine(List.Transform(t[номстр],Text.From),», «)}),
    to = Table.Pivot(gr, List.Distinct(gr[buh]), «buh», «tmp»)
in
    to

[/vba]

хотя задачка, конечно, для DAX:

Код

=CONCATENATEX(‘Table1’;’Table1′[номстр];», «)

К сообщению приложен файл:

12345.xlsx
(94.7 Kb)

Сообщение отредактировал прохожий2019Воскресенье, 05.03.2023, 13:06

 

Ответить

solniechnaya

Дата: Воскресенье, 05.03.2023, 21:30 |
Сообщение № 20

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


прохожий2019, jakim,
Благодарю за предложенные варианты решения,
А всё же можно сделать с использованием кликабельной сводной таблицы?
Если мы дабл-кликнем в примере на жёлтую ячейку с числом «2» в сводной таблице, то откроется лист с детальной информацией.
также ожидается при дабл-клике в итоговой таблице на ячейку с «6, 9»

С надеждой,

 

Ответить

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

Есть, как минимум, три способа выполнить поставленную задачу:

  1. Преобразовать программе Notepad++
  2. Cтолбец в строку Excel через запятую
  3. Использовать Онлайн-скрипт

Содержание

  1. Преобразование в программе Notepad++ с помощью регулярных выражений
  2. Преобразование столбца в строку через запятую в Excel
  3. Столбик через запятую и обратно онлайн
  4. Список через запятую > в столбик
  5. Столбик > список через запятую

Преобразование в программе Notepad++ с помощью регулярных выражений

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

Вставляем в программу список для преобразования.
Преобразование списка через запятую в столбик в Нотпад
Для примера я взял набор фраз через запятую. Нажимаем комбинацию клавиш Ctrl+H (поиск с заменой), в открывшемся окне ставим метку Режим поиска — Расширенный, Найти: , (запятая и пробел), Заменить на: n Заменить все. Получаем список столбиком.

Если нужно из столбика сделать список через запятую, тогда то же самое, только Найти: rn и Заменить на: , (запятая и пробел).
Если что-то заменилось не так, как надо, делаем отмену Ctrl+Z и пробуем по-другому, например, ищем только n.

Преобразование столбца в строку через запятую в Excel

Используем формулу «лесенка».
Скачать готовый файл можно здесь: 4memo-ru-stolbik-zapyataya.xls
Запятую в самой первой ячейке можно заменить, на что-то другое, если нужно.
Формулу во втором столбце растягиваем вниз, насколько потребуется.
Если полученный список нужно вставить в другой лист эксель, то не забываем избавиться от формул, вставив предварительно данные в блокнот.

Столбик через запятую и обратно онлайн

Этот вариант подойдет для тех, кому нужно срочно, прямо на этой странице, решить задачу конвертации списка — за вас все сделает скрипт.

Список через запятую > в столбик

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

Столбик > список через запятую

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

 

Добрый день.
Ребята, подскажите: есть столбец данных, нужно сцепить через запятую в одной итоговой ячейке все значения столбца. Формула «сцепить» нужно клацать каждую ячейку, а их сотни. Как?

 

Z

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

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

Win 10, MSO 2013 SP1

Показать — где лень? Что с пустыми делать — пробелы, «0» вставлять?
И главное — что с этой свалкой потом делать будете? Разбирать по ячейкам-строкам?
Впрочем, было уже немало вариантов, например, от HUGO и ZVI — сцепление по критерию. Ищем!

Изменено: Z15.11.2013 16:22:42

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

www

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

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

 

Kuzmich

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

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

#5

15.11.2013 16:38:15

Результат в последнюю ячейку +1 столбца А

Код
Option Explicit

Sub scepka()
Dim iCell As Range
Dim Itogo As String
For Each iCell In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(2, 1)
    Itogo = Itogo & "," & iCell
Next
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = Mid(Itogo, 2, Len(Itogo) - 1)
End Sub

 
 

SkyPro

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

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

#6

15.11.2013 16:48:36

Вот такая функция есть:

Код
=ampersand(A2:A100;", ")

Код
Function ampersand(rRange As Range, Optional txt$ = "; ") As String
Dim rCell As Range
    For Each rCell In rRange
        If rCell.Value <> "" Then
            ampersand = ampersand & Trim(rCell.Value) & txt
        End If
    Next
ampersand = Left(ampersand, Len(ampersand) - Len(txt))
End Function
 

SkyPro

 

MaskaSmerti

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

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

#7

15.11.2013 17:08:27

товарищи! Всем огромное спасибо! Все попробовал! Работает :)

Хитрости »

11 Июль 2016              126340 просмотров


ВПР с возвратом всех значений

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

  • Вариант 1: все значения необходимо получить в одной ячейке через разделитель(скажем запятую). Такое возможно только через использование VBA(на момент написания статьи). Такую функцию я написал давно: Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
  • . В результате получим что-то вроде: Александров Иван,Александров Петр,Андреев Алексей.

  • Вариант 2: каждое значение должно быть в отдельной ячейке. Этот вариант мы и рассмотрим более подробно в данной статье. Причем решать задачу будем без использования макросов — только встроенными функциями

Здесь надо сразу оговориться — при помощи непосредственно ВПР(VLookup) это сделать ну никак не получится. Но это можно сделать при помощи её родственников — связки ИНДЕКС(ПОИСКПОЗ)(INDEX(MATCH)). Плюс еще пара функций. В сборе функция выглядит так:
=ИНДЕКС($A$12:$G$111;НАИМЕНЬШИЙ(ЕСЛИ($I$12=$C$12:$C$111;СТРОКА($C$12:$C$111)-11);СТРОКА(A1));1)
=INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1)
где:

  • $A$12:$G$111 — таблица с ФИО и всеми данными
  • $I$12 — ячейка с названием отдела
  • $C$12:$C$111 — столбец с названиями отделов в таблице $A$12:$G$111

А теперь начнем разбирать формулу по кусочкам
Предлагаю сразу скачать пример файла с данными и формулами — тогда понять будет проще:

  Tips_All_VlookupAllVals.xls (84,5 KiB, 23 005 скачиваний)

  • Первое и самое главное — формула вводится в ячейку как формула массива. Это значит, что для приложенного к статье примера необходимо будет выделить ячейку J12, записать в неё формулу и завершить ввод нажатием сразу трех клавиш: Ctrl+Shift+Enter. После этого скопировать ячейку, выделить диапазон J13:J39 и вставить туда скопированную ячейку.
  • За отбор ФИО указанного отдела отвечает этот кусок: ЕСЛИ($I$12=$C$12:$C$111;СТРОКА($C$12:$C$111)-11)
    IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11)
    Как видно здесь идет сравнение отдела, записанного в $I$12 со всеми отделами в таблице: $C$12:$C$111. Если отдел совпадает, то функция возвращает номер строки СТРОКА($C$12:$C$111). Но нам нужен не номер строки на листе, а номер строки внутри таблицы(потому что в формулу ИНДЕКС(INDEX) у нас передан диапазон $A$12:$G$111 и если передать в его второй аргумент(номер_строки) 14, то получим не Александров Иван, а Андреев Олег). Поэтому отнимаем от номера строки 11, чтобы было возвращено число 3(а не 14). Т.к. формула записана формулой массива — ЕСЛИ(IF) возвращает массив из номеров строк и логического ЛОЖЬ(FALSE)(если отдел не совпадает):
    шаг 1: ЕСЛИ({ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};{12:13:14:15:16:17:18:19:20}-11)
    шаг 2: ЕСЛИ({ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};{1:2:3:4:5:6:7:8:9})
    шаг 3: {ЛОЖЬ:ЛОЖЬ:3:ЛОЖЬ:ЛОЖЬ:6:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}
  • Т.к. ЕСЛИ(IF) в данном случае возвращает массив значений, включая ненужные нам ЛОЖЬ(FALSE) — применяем НАИМЕНЬШИЙ(SMALL), которая будет брать только числа (сначала 3, затем 6 и т.д.), а логические значения ЛОЖЬ(FALSE) будет игнорировать:
    НАИМЕНЬШИЙ({ЛОЖЬ:ЛОЖЬ:3:ЛОЖЬ:ЛОЖЬ:6:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};СТРОКА(A1))
    SMALL({ЛОЖЬ:ЛОЖЬ:3:ЛОЖЬ:ЛОЖЬ:6:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};ROW(A1))
    Функция НАИМЕНЬШИЙ(SMALL) отбирает из указанного массива чисел наименьшее. При этом можно отобрать по рангу — первое наименьшее, второе наименьшее, третье наименьшее и т.д.

    1. с первым аргументом разобрались — это уже отобранные записи, где число — строка в таблице с нужной ФИО и ненужные нам логические ЛОЖЬ(FALSE).
    2. второй аргумент СТРОКА(A1) для каждой следующей строки будет меняться. В приложенном примере первая ячейка с формулой — J12. В ней СТРОКА(A1) равна 1, т.е. НАИМЕНЬШИЙ(SMALL) вернет первое наименьшее из массива чисел — 3. В ячейке J13 это уже будет СТРОКА(A2) и она равна 2, а значит НАИМЕНЬШИЙ(SMALL) вернет второе наименьшее из массива чисел — 6. И т.д. Когда все числа закончатся — НАИМЕНЬШИЙ(SMALL) вернет значение ошибки #ЧИСЛО!(#NUM!)
      ячейка J12
      шаг 1: НАИМЕНЬШИЙ({ЛОЖЬ:ЛОЖЬ:3:ЛОЖЬ:ЛОЖЬ:6:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};СТРОКА(A1))
      шаг 2: НАИМЕНЬШИЙ({ЛОЖЬ:ЛОЖЬ:3:ЛОЖЬ:ЛОЖЬ:6:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};1)
      шаг 3: НАИМЕНЬШИЙ(3)
      ячейка J13
      шаг 1: НАИМЕНЬШИЙ({ЛОЖЬ:ЛОЖЬ:3:ЛОЖЬ:ЛОЖЬ:6:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};СТРОКА(A2))
      шаг 2: НАИМЕНЬШИЙ({ЛОЖЬ:ЛОЖЬ:3:ЛОЖЬ:ЛОЖЬ:6:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ};2)
      шаг 3: НАИМЕНЬШИЙ(6)

  • И последний штрих — все это передается в функцию ИНДЕКС(INDEX). Для ячейки J12 это будет значение ячейки, расположенной на пересечении 3-й строки и 1-го столбца диапазона $A$12:$G$111. На листе это ячейка A14. Т.е. третья сверху ячейка столбца А в диапазоне $A$12:$G$111 — Александров Иван.

    ячейка J12
    шаг 1: =ИНДЕКС($A$12:$G$111;НАИМЕНЬШИЙ(3);1)
    шаг 2: =ИНДЕКС($A$12:$G$111;3;1)
    шаг 3: Александров Иван
    ячейка J13
    шаг 1: =ИНДЕКС($A$12:$G$111;НАИМЕНЬШИЙ(6);1)
    шаг 2: =ИНДЕКС($A$12:$G$111;6;1)
    шаг 3: Александров Петр

И в довершение неплохо бы убрать ошибку в случае, если ни одно значение не соответствует критерию или значений больше, чем ячеек с формулами. Более подробно подобное решение я описывал в этой статье: Как в ячейке с формулой вместо ошибки показать 0
Для всех версий Excel:
=ЕСЛИ(ЕОШ(ИНДЕКС($A$12:$G$111;НАИМЕНЬШИЙ(ЕСЛИ($I$12=$C$12:$C$111;СТРОКА($C$12:$C$111)-11);СТРОКА(A1));1));»»;ИНДЕКС($A$12:$G$111;НАИМЕНЬШИЙ(ЕСЛИ($I$12=$C$12:$C$111;СТРОКА($C$12:$C$111)-11);СТРОКА(A1));1))
=IF(ISERR(INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1));»»;INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1))
Для Excel 2007 и выше:
=ЕСЛИОШИБКА(ИНДЕКС($A$12:$G$111;НАИМЕНЬШИЙ(ЕСЛИ($I$12=$C$12:$C$111;СТРОКА($C$12:$C$111)-11);СТРОКА(A1));1);»»)
=IFERROR(INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1);»»)
Плюс к этому в приложенном к статье файле я привел формулу, которая возвращает список всех сотрудников выбранного отдела без повторений и формулу с возможностью просто поменять заголовок в результирующем столбце(в файле это столбец K, ячейка K11) на любой из исходной таблицы и данные будут отображены из этого столбца.
Например, если вместо столбца ФИО записать в K11 Адрес — будут отображены все адреса сотрудников выбранного отдела. Если записать Телефон — все телефоны сотрудников выбранного отдела.

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

  Tips_All_VlookupAllVals.xls (84,5 KiB, 23 005 скачиваний)

Так же см.:
Как найти значение в другой таблице или сила ВПР
ВПР с поиском по нескольким листам
ВПР_МН


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

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


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



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

Содержание

  1. Слова через запятую сделать списком в столбик и наоборот — 3 способа
  2. Преобразование в программе Notepad++ с помощью регулярных выражений
  3. Преобразование столбца в строку через запятую в Excel
  4. Столбик через запятую и обратно онлайн
  5. Список через запятую > в столбик
  6. Столбик > список через запятую
  7. Склеивание текста по условию
  8. Способ 0. Формулой
  9. Способ 1. Макрофункция склейки по одному условию
  10. Способ 2. Сцепить текст по неточному условию
  11. Способ 3. Макрофункция склейки текста по двум условиям
  12. Способ 4. Группировка и склейка в Power Query
  13. Excel таблицы через запятую

Слова через запятую сделать списком в столбик и наоборот — 3 способа

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

Есть, как минимум, три способа выполнить поставленную задачу:

Преобразование в программе Notepad++ с помощью регулярных выражений

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

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

Для примера я взял набор фраз через запятую. Нажимаем комбинацию клавиш Ctrl+H (поиск с заменой), в открывшемся окне ставим метку Режим поиска — Расширенный, Найти: , (запятая и пробел), Заменить на: n Заменить все. Получаем список столбиком.

Если нужно из столбика сделать список через запятую, тогда то же самое, только Найти: rn и Заменить на: , (запятая и пробел).
Если что-то заменилось не так, как надо, делаем отмену Ctrl+Z и пробуем по-другому, например, ищем только n.

Преобразование столбца в строку через запятую в Excel

Используем формулу «лесенка».
Скачать готовый файл можно здесь: 4memo-ru-stolbik-zapyataya.xls
Запятую в самой первой ячейке можно заменить, на что-то другое, если нужно.
Формулу во втором столбце растягиваем вниз, насколько потребуется.
Если полученный список нужно вставить в другой лист эксель, то не забываем избавиться от формул, вставив предварительно данные в блокнот.

Столбик через запятую и обратно онлайн

Этот вариант подойдет для тех, кому нужно срочно, прямо на этой странице, решить задачу конвертации списка — за вас все сделает скрипт.

Список через запятую > в столбик

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

Столбик > список через запятую

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

Ничего не получилось

А что именно «не получилось»?

Б — это второй вариант с эксель?
Только что проверил, скачав файл, добавив данных в первый столбец и протянув формулу во втором столбце — все работает.
Напишите подробно, как Вы делали пошагово, тогда можно будет понять, где ошибка.

Все работает! Спасибо!
Все способы сверху даже не стал использовать. А зачем? Если есть то же самое, но он-лайн.
Давно искал. Сохраню страницу в рабочие закладки.
Еще раз Спасибо!

Пожалуйста! Рад, что Вам пригодилось.

Всем доброго времени суток! В первую очередь спасибо автору за труды! Реально на работе нужна и пригодилась функция «Список через запятую > в столбик», которая через скрипт на сайте. Вот только не всегда есть возможность зайти на Ваш сайт для этого. С готовым файлом «4memo-ru-stolbik-zapyataya.xls» я так и не понял как это реализовать. Все таки как это сделать в файле excel, чтобы было примерно как на сайте, в какую-нибудь ячейку ввел данные с запятыми, а excel автоматически или по нажатию кнопки распределил их в столбик, чтоб можно было скопировать и пр. Только уже готовый файл, если можно?

Этот файл предназначен для преобразования только из столбца в список через запятую (или другой разделитель).
Вашу задачу (список через запятую или другой разделитель > в столбик) можно решить в следующие два этапа:
1. Открываем чистый лист Excel, вставляем в первую ячейку ваш список, потом идем в меню Данные > Текст по столбцам, в открывшемся диалоговом окне выбираем Формат данных > С разделителями, жмем Далее, выбираем разделитель «запятая», жмем Далее и потом Готово. Все, что между запятыми должно распределиться по отдельным столбцам.
2. Теперь то, что у нас распределено по горизонтали в столбцах, нужно распределить по вертикали в строках. Для этого выделяем, все ячейки, в которых есть данные, либо целиком строку, копируем Ctrl+C, опускаем курсор в свободную ячейку ниже, клик правой кнопкой мыши и в контекстном меню выбираем: Специальная вставка > Транспонировать.
Чтобы все это срабатывало по нажатию кнопки, как Вы хотите, наверное можно написать какой-нибудь макрос, но я сейчас не готов этим заниматься.

Если Вы или кто-то еще напишет такой макрос, то я готов разместить файл с ним в статье с указанием авторства.

Источник

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

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

Допустим, что у нас имеется база данных по клиентам, где одному названию компании может соответствовать несколько разных 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) .

Источник

Excel таблицы через запятую

Модератор форума: китин, _Boroda_

Мир MS Excel » Вопросы и решения » Вопросы по Excel » Вывод значений через запятую из таблицы (Формулы/Formulas)

Вывод значений через запятую из таблицы

azZazZello Дата: Среда, 15.07.2015, 07:18 | Сообщение № 1
Nic70y Дата: Среда, 15.07.2015, 07:35 | Сообщение № 2
azZazZello Дата: Среда, 15.07.2015, 07:42 | Сообщение № 3
azZazZello Дата: Среда, 15.07.2015, 08:45 | Сообщение № 4
Nic70y Дата: Среда, 15.07.2015, 09:14 | Сообщение № 5
ShAM Дата: Среда, 15.07.2015, 09:52 | Сообщение № 6
azZazZello Дата: Среда, 15.07.2015, 10:05 | Сообщение № 7
_Boroda_ Дата: Среда, 15.07.2015, 10:06 | Сообщение № 8

Ответить

Rioran Дата: Среда, 15.07.2015, 10:07 | Сообщение № 9

Ради спортивного интереса предлагаю решение пользовательской функцией.

Во вложении пример использования. Макросы должны быть разрешены. Первые два аргумента должны быть столбцами, 3-й аргумент — проверочное имя. Аргументы функции:

Ради спортивного интереса предлагаю решение пользовательской функцией.

Во вложении пример использования. Макросы должны быть разрешены. Первые два аргумента должны быть столбцами, 3-й аргумент — проверочное имя. Аргументы функции:

Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение azZazZello, здравствуйте.

Ради спортивного интереса предлагаю решение пользовательской функцией.

Во вложении пример использования. Макросы должны быть разрешены. Первые два аргумента должны быть столбцами, 3-й аргумент — проверочное имя. Аргументы функции:

sv2014 Дата: Среда, 15.07.2015, 11:15 | Сообщение № 10

azZazZello, добрый день,
могу предложить вам макрос,который решает ваш вопрос при любом количестве ваших данных
в столбце F

azZazZello, добрый день,
могу предложить вам макрос,который решает ваш вопрос при любом количестве ваших данных
в столбце F

Сообщение azZazZello, добрый день,
могу предложить вам макрос,который решает ваш вопрос при любом количестве ваших данных
в столбце F

sv2014 Дата: Среда, 15.07.2015, 11:43 | Сообщение № 11

azZazZello, или такой же вариант с пробелом при необходимости.
На вашем файле- примере проверил.

azZazZello, или такой же вариант с пробелом при необходимости.
На вашем файле- примере проверил.

Сообщение azZazZello, или такой же вариант с пробелом при необходимости.
На вашем файле- примере проверил.

Alekc7711 Дата: Суббота, 22.02.2020, 02:05 | Сообщение № 12

sv2014, здравствуйте.
Подскажите, что не так делаю?
Немного покрутил макрос, выпала ошибка
http://prntscr.com/r5xauo

sv2014, здравствуйте.
Подскажите, что не так делаю?
Немного покрутил макрос, выпала ошибка
http://prntscr.com/r5xauo

Сообщение sv2014, здравствуйте.
Подскажите, что не так делаю?
Немного покрутил макрос, выпала ошибка
http://prntscr.com/r5xauo

Alekc7711 Дата: Суббота, 22.02.2020, 02:30 | Сообщение № 13
Pelena Дата: Суббота, 22.02.2020, 08:04 | Сообщение № 14
«Черт возьми, Холмс! Но как. »
Ю-money 41001765434816

Ответить

solniechnaya Дата: Воскресенье, 05.03.2023, 09:57 | Сообщение № 15

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

Пример во вложении

С Уважением.
Solniechnaya@gmail.com

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

Пример во вложении

С Уважением.
Solniechnaya@gmail.com solniechnaya

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

Пример во вложении

С Уважением.
Solniechnaya@gmail.com Автор — solniechnaya
Дата добавления — 05.03.2023 в 09:57

jakim Дата: Воскресенье, 05.03.2023, 10:23 | Сообщение № 16
jakim Дата: Воскресенье, 05.03.2023, 10:46 | Сообщение № 17
jakim Дата: Воскресенье, 05.03.2023, 12:13 | Сообщение № 18
прохожий2019 Дата: Воскресенье, 05.03.2023, 12:52 | Сообщение № 19

хотя задачка, конечно, для DAX:

хотя задачка, конечно, для DAX:

хотя задачка, конечно, для DAX:

solniechnaya Дата: Воскресенье, 05.03.2023, 21:30 | Сообщение № 20

прохожий2019, jakim,
Благодарю за предложенные варианты решения,
А всё же можно сделать с использованием кликабельной сводной таблицы?
Если мы дабл-кликнем в примере на жёлтую ячейку с числом «2» в сводной таблице, то откроется лист с детальной информацией.
также ожидается при дабл-клике в итоговой таблице на ячейку с «6, 9»

прохожий2019, jakim,
Благодарю за предложенные варианты решения,
А всё же можно сделать с использованием кликабельной сводной таблицы?
Если мы дабл-кликнем в примере на жёлтую ячейку с числом «2» в сводной таблице, то откроется лист с детальной информацией.
также ожидается при дабл-клике в итоговой таблице на ячейку с «6, 9»

Сообщение прохожий2019, jakim,
Благодарю за предложенные варианты решения,
А всё же можно сделать с использованием кликабельной сводной таблицы?
Если мы дабл-кликнем в примере на жёлтую ячейку с числом «2» в сводной таблице, то откроется лист с детальной информацией.
также ожидается при дабл-клике в итоговой таблице на ячейку с «6, 9»

С надеждой, Автор — solniechnaya
Дата добавления — 05.03.2023 в 21:30

Источник

Adblock
detector

Как вернуть несколько значений поиска в одной ячейке, разделенной запятыми?

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

документ возвращает несколько значений, разделенных запятыми, 1

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

Вернуть несколько значений поиска в одной ячейке, разделенной запятыми, с помощью Kutools for Excel


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

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

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: возврат нескольких значений поиска в одну ячейку, разделенную запятыми

Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby Extendoffice
    Dim I As Long
    Dim xRet As String
    For I = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(I, 1) = LookupValue Then
            If xRet = "" Then
                xRet = LookupRange.Cells(I, ColumnNumber) & Char
            Else
                xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
            End If
        End If
    Next
    SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function

3. Затем сохраните этот код и закройте окно модуля, вернитесь на свой рабочий лист и введите эту формулу: = SingleCellExtract (D2; A2: B15,2; «,») в пустую ячейку, в которую вы хотите вернуть результат. А затем нажмите Enter ключ для получения результата, см. снимок экрана:

документ возвращает несколько значений, разделенных запятыми, 2

Внимание: В приведенной выше формуле:

D2: указывает значения ячеек, которые вы хотите найти;

А2: В15: это диапазон данных, из которого вы хотите получить данные;

2: число 2 — это номер столбца, в котором должно быть возвращено совпадающее значение;

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

Вы можете изменить их по своему усмотрению.


Вернуть несколько значений поиска в одной ячейке, разделенной запятыми, с помощью Kutools for Excel

Если у вас есть Kutools for Excel, эта задача больше не будет проблемой. В Расширенные ряды комбинирования Утилита может помочь вам объединить все относительные значения на основе столбца.

После установки Kutools for Excel, пожалуйста, сделайте следующее:

1. Выберите диапазон данных, в котором вы хотите объединить все совпадающие значения на основе столбца.

2. Нажмите Кутулс > Слияние и разделение > Расширенные ряды комбинирования, см. снимок экрана:

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

документ возвращает несколько значений, разделенных запятыми, 4

4. Затем щелкните имя другого столбца, в котором вы хотите объединить совпадающие значения, и щелкните Сочетать чтобы выбрать один разделитель для разделения комбинированных значений, см. снимок экрана:

документ возвращает несколько значений, разделенных запятыми, 5

5. Затем нажмите OK кнопки, все соответствующие ячейки с одинаковым значением были объединены в одну ячейку, разделенную запятой, см. скриншоты:

Нажмите, чтобы узнать больше об этой утилите Advanced Combine Rows…

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !


Демонстрация: вернуть несколько значений поиска в одну ячейку, разделенную запятыми, с помощью Kutools for Excel


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

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Цитата: sergo44441 от 09.09.2010, 22:08
попробуйте мой вариант макроса

Спасибо за желание помочь! (+1)
На самом деле, это тот самый способ, с которого я и сам начинал — в смысле, через Instr и Mid. Вот так вот я делал:

             Счётчик = 1
       Do While Счётчик <= ВсегоСтрокВтаблице
         If Счётчик Mod 200 = 0 Then DoEvents
         ProgressBar1.Value = Счётчик
        With Sheets("Обработка")
         КопияНачальнойСтроки = .Range("A" & Счётчик)

         ПозицияПервойЗапятой = InStr(1, КопияНачальнойСтроки, ",")
         ПозицияВторойЗапятой = InStr(ПозицияПервойЗапятой + 1, _
                                         КопияНачальнойСтроки, ",")
         ПозицияТретьейЗапятой = InStr(ПозицияВторойЗапятой + 1, _
                                         КопияНачальнойСтроки, ",")
         ПозицияЧетвёртойЗапятой = InStr(ПозицияТретьейЗапятой + 1, _
                                         КопияНачальнойСтроки, ",")
         ПозицияПятойЗапятой = InStr(ПозицияЧетвёртойЗапятой + 1, _
                                         КопияНачальнойСтроки, ",")
         ПозицияШестойЗапятой = InStr(ПозицияПятойЗапятой + 1, _
                                         КопияНачальнойСтроки, ",")
         ПозицияСедьмойЗапятой = InStr(ПозицияШестойЗапятой + 1, _
                                         КопияНачальнойСтроки, ",")
         ПозицияВосьмойЗапятой = InStr(ПозицияСедьмойЗапятой + 1, _
                                         КопияНачальнойСтроки, ",")

         .Range("A" & Счётчик) = _
                Mid(КопияНачальнойСтроки, 1, ПозицияПервойЗапятой - 1)
         .Range("B" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияПервойЗапятой + 1, _
                               ПозицияВторойЗапятой - ПозицияПервойЗапятой - 1)
         .Range("C" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияВторойЗапятой + 1, _
                               ПозицияТретьейЗапятой - ПозицияВторойЗапятой - 1)
         .Range("D" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияТретьейЗапятой + 1, _
                               ПозицияЧетвёртойЗапятой - ПозицияТретьейЗапятой - 1)
         .Range("E" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияЧетвёртойЗапятой + 1, _
                               ПозицияПятойЗапятой - ПозицияЧетвёртойЗапятой - 1)
         .Range("F" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияПятойЗапятой + 1, _
                               ПозицияШестойЗапятой - ПозицияПятойЗапятой - 1)
         .Range("G" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияШестойЗапятой + 1, _
                               ПозицияСедьмойЗапятой - ПозицияШестойЗапятой - 1)
         .Range("H" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияСедьмойЗапятой + 1, _
                               ПозицияВосьмойЗапятой - ПозицияСедьмойЗапятой - 1)
         .Range("I" & Счётчик) = _
                Mid(КопияНачальнойСтроки, ПозицияВосьмойЗапятой + 1)
      End With
     Счётчик = Счётчик + 1
   Loop

Получалось очень долго. А чтобы не было совсем уж тоскливо, даже ПрогрессБары стал применять :)  А потом вспомнил, что мы живём в 21-ом веке, стал копаться в справочной системе и «надыбал» :) метод PasteSpecial, который почему-то вставляет данные то сразу «разбросанными» по ячейкам, то «одним куском» в столбец «A».   Отчего  зависит такая ощутимая разница в работе этого метода, я понять, увы, не смог.
И ещё нашёл метод TextToColumns, который вроде бы для этого и предназначен. Но эксперименты с ним особым успехом тоже  не увенчались. Потому-то и решил прибегнуть к помощи знатоков.
Может кто-нибудь подскажет, как следует правильно использовать эти методы для решения моей задачи или посоветует ещё какой-нибудь способ?

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