Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перечисление значений из строки пропуская пустоты - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Перечисление значений из строки пропуская пустоты
Faraway Дата: Суббота, 24.11.2018, 19:49 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 72
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Здравствуйте, хочу упорядочить кое какие данные, нужно, чтоб данные из строки перечислялись в одной ячейке через запятую, при этом игнорируя пустоты.
Мои знания свелись к функции JOIN с разделителем в виде запятой с пробелом справа, но проблема в том, что оно нифига не игнорирует пустые ячейки и тыкает в таком случае запятые.
Для того, чтоб меня более верно поняли, я сделал ТАБЛИЦУ, в которой постарался отобразил, в каком приблизительно виде данные и как их надо преобразовать (J1).
Есть какой то вариант получить желаемое?
Спасибо.


Сообщение отредактировал Faraway - Суббота, 24.11.2018, 19:50
 
Ответить
СообщениеЗдравствуйте, хочу упорядочить кое какие данные, нужно, чтоб данные из строки перечислялись в одной ячейке через запятую, при этом игнорируя пустоты.
Мои знания свелись к функции JOIN с разделителем в виде запятой с пробелом справа, но проблема в том, что оно нифига не игнорирует пустые ячейки и тыкает в таком случае запятые.
Для того, чтоб меня более верно поняли, я сделал ТАБЛИЦУ, в которой постарался отобразил, в каком приблизительно виде данные и как их надо преобразовать (J1).
Есть какой то вариант получить желаемое?
Спасибо.

Автор - Faraway
Дата добавления - 24.11.2018 в 19:49
krosav4ig Дата: Суббота, 24.11.2018, 22:03 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Код
=ArrayFormula(join(", ";filter(unique(A1:I10);unique(A1:I10)>"")))


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
Код
=ArrayFormula(join(", ";filter(unique(A1:I10);unique(A1:I10)>"")))

Автор - krosav4ig
Дата добавления - 24.11.2018 в 22:03
Faraway Дата: Воскресенье, 25.11.2018, 12:47 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 72
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Спасибо, добрый человек!
Но немного не то, видимо моя вина. Создал табличку чтоб каждый желающий мог попробовать реализовать.
Данный собирать надо только с 1 строки, т.е. с первой строки данные собираются в J1, со 2 строки в J2... И значения надо не только уникальные, а вообще, есть значение, его вносит, нет значения - проверяет следующую ячейку... Но решение понравилось и как всегда - очень простое, а я до такой елементарщины не догадался, искал чего то сложного. Написал для 3-й строки то что надо было. А можно как то эту формулу для массива сделать? А то просто добавить ArrayFormula ничего не дает.


Сообщение отредактировал Faraway - Воскресенье, 25.11.2018, 13:16
 
Ответить
СообщениеСпасибо, добрый человек!
Но немного не то, видимо моя вина. Создал табличку чтоб каждый желающий мог попробовать реализовать.
Данный собирать надо только с 1 строки, т.е. с первой строки данные собираются в J1, со 2 строки в J2... И значения надо не только уникальные, а вообще, есть значение, его вносит, нет значения - проверяет следующую ячейку... Но решение понравилось и как всегда - очень простое, а я до такой елементарщины не догадался, искал чего то сложного. Написал для 3-й строки то что надо было. А можно как то эту формулу для массива сделать? А то просто добавить ArrayFormula ничего не дает.

Автор - Faraway
Дата добавления - 25.11.2018 в 12:47
krosav4ig Дата: Воскресенье, 25.11.2018, 17:10 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
в смысле чтобы в массиве были построчно контактенированные значения? Если да, то, имхо, только писать udf


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениев смысле чтобы в массиве были построчно контактенированные значения? Если да, то, имхо, только писать udf

Автор - krosav4ig
Дата добавления - 25.11.2018 в 17:10
Gustav Дата: Воскресенье, 25.11.2018, 20:36 | Сообщение № 5
Группа: Админы
Ранг: Участник клуба
Сообщений: 2809
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Если да, то, имхо, только писать udf

Или не использовать функцию JOIN и старательно набрать формулу с конкатенацией отдельных диапазонов-столбцов:
[vba]
Код
=ArrayFormula(REGEXREPLACE(
IF(A1:A10>"";A1:A10&", ";)&
IF(B1:B10>"";B1:B10&", ";)&
IF(C1:C10>"";C1:C10&", ";)&
IF(D1:D10>"";D1:D10&", ";)&
IF(E1:E10>"";E1:E10&", ";)&
IF(F1:F10>"";F1:F10&", ";)&
IF(G1:G10>"";G1:G10&", ";)&
IF(H1:H10>"";H1:H10&", ";)&
IF(I1:I10>"";I1:I10&", ";)
;", $";))
[/vba]Да, утомительно, но зато ее достаточно ввести только в одну первую ячейку колонки - J1. С JOIN же придется писать (протягивать) формулы в каждой строке колонки J.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Если да, то, имхо, только писать udf

Или не использовать функцию JOIN и старательно набрать формулу с конкатенацией отдельных диапазонов-столбцов:
[vba]
Код
=ArrayFormula(REGEXREPLACE(
IF(A1:A10>"";A1:A10&", ";)&
IF(B1:B10>"";B1:B10&", ";)&
IF(C1:C10>"";C1:C10&", ";)&
IF(D1:D10>"";D1:D10&", ";)&
IF(E1:E10>"";E1:E10&", ";)&
IF(F1:F10>"";F1:F10&", ";)&
IF(G1:G10>"";G1:G10&", ";)&
IF(H1:H10>"";H1:H10&", ";)&
IF(I1:I10>"";I1:I10&", ";)
;", $";))
[/vba]Да, утомительно, но зато ее достаточно ввести только в одну первую ячейку колонки - J1. С JOIN же придется писать (протягивать) формулы в каждой строке колонки J.

Автор - Gustav
Дата добавления - 25.11.2018 в 20:36
Faraway Дата: Вторник, 27.11.2018, 21:38 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 72
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
еще раз убеждаюсь, что многие решения решаются очень просто, главное до них допереть.
 
Ответить
Сообщениееще раз убеждаюсь, что многие решения решаются очень просто, главное до них допереть.

Автор - Faraway
Дата добавления - 27.11.2018 в 21:38
krosav4ig Дата: Среда, 28.11.2018, 00:30 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Однако, совсем забыл про textjoin
[vba]
Код
=ArrayFormula(REGEXREPLACE(TRANSPOSE(SPLIT(TEXTJOIN(", ";1;IF(COLUMN(A1:I10)=1;"|";"")&A1:I10);"|"));"^, |, $";))
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 28.11.2018, 02:50
 
Ответить
СообщениеОднако, совсем забыл про textjoin
[vba]
Код
=ArrayFormula(REGEXREPLACE(TRANSPOSE(SPLIT(TEXTJOIN(", ";1;IF(COLUMN(A1:I10)=1;"|";"")&A1:I10);"|"));"^, |, $";))
[/vba]

Автор - krosav4ig
Дата добавления - 28.11.2018 в 00:30
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!