Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2013, 07:26   #1
Vikking
Пользователь
 
Регистрация: 21.01.2011
Сообщений: 17
По умолчанию Объединение содержимого ячеек по нескольким условиям

Доброго времени суток, Уважаемые.
Подскажите, пожалуйста, как с помощью формулы решить задачу по объединению содержимого ячеек в одну при выполнении нескольких условий.
Во вложенном примере: объединить содержимое ячеек из диапазона "Данные" в ячейку "Сводная" через запятую при выполнении условия 1 - наличие метки "$" и условия 2 - наличие одной из меток "А", "Б" или "В"
формула через "&" или вида "=СЦЕПИТЬ" не подходить так как в реальной работе количество данных более 1 тысячи и забивать ссылки на каждую ячейку данных рука отвалится.
Заранее спасибо.
надеюсь на скорейший ответ так как работа встала.
Вложения
Тип файла: rar Пример.rar (3.8 Кб, 23 просмотров)
Vikking вне форума Ответить с цитированием
Старый 15.03.2013, 10:32   #2
Volodshan
Форумчанин
 
Регистрация: 20.05.2008
Сообщений: 241
По умолчанию

Макросом или, что подобно макросу, специально написанной пользовательской функцией... Что-то подобное было в "Копилке" на planetaexcel.
ps На киберфоруме уже предложено решение... для вас

Последний раз редактировалось Volodshan; 15.03.2013 в 10:41.
Volodshan вне форума Ответить с цитированием
Старый 15.03.2013, 10:37   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

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

Так что либо макрос, либо UDF
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 15.03.2013, 10:48   #4
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Vikking Посмотреть сообщение
...как с помощью формулы...
Конкатенация в Excel осуществляется только функцией листа СЦЕПИТЬ() ("&" - это тоже самое)
Цитата:
Сообщение от Vikking Посмотреть сообщение
...формула через "&" или вида "=СЦЕПИТЬ" не подходить так как в реальной работе количество данных более 1 тысячи и забивать ссылки на каждую ячейку данных рука отвалится...
Верно, отвалится, потому что СЦЕПИТЬ() не умеет конкатенировать виртуальные массивы
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 15.03.2013, 11:11   #5
Vikking
Пользователь
 
Регистрация: 21.01.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Volodshan Посмотреть сообщение
Макросом или, что подобно макросу, специально написанной пользовательской функцией... Что-то подобное было в "Копилке" на planetaexcel.
ps На киберфоруме уже предложено решение... для вас
Да верно, для меня. Торопился по нескольким форумам проблему разослал.
Решение предложено и то что нужно, но теперь соображаю как в свою огромную базу интегрировать это ПФ. К сожалению не работал с макросами. Ламер - одним словом
Vikking вне форума Ответить с цитированием
Старый 15.03.2013, 11:26   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

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

А если она и впрямь огромная - тогда думаю нужен макрос, а не UDF, или массивная UDF.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 15.03.2013 в 11:34.
Hugo121 вне форума Ответить с цитированием
Старый 15.03.2013, 11:34   #7
WIC
Форумчанин Подтвердите свой е-майл
 
Регистрация: 21.09.2007
Сообщений: 138
По умолчанию

я решил немного по-другому. Не умею макросы делать.
Добавил в лист 1 формулу =День(дата). Сделал формат ячейки невидимый (;;.
А там уже через суммаесли().

Спасибо за участие.
WIC вне форума Ответить с цитированием
Старый 15.03.2013, 11:53   #8
Vikking
Пользователь
 
Регистрация: 21.01.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Про то, что база огромная - нужно сразу говорить.
Тогда бы думаю автор того кода некоторые моменты сделал иначе, например на каждом шаге по массиву не лазил по 2 раза на лист, чтоб сверить данные.

А если она и впрямь огромная - тогда думаю нужен макрос, а не UDF, или массивная UDF.
Да, вы безусловно правы. Ступил. А если я сейчас здесь выложу фрагмент реальной базы, Вы поможете подогнать ПФ под неё?
Vikking вне форума Ответить с цитированием
Старый 15.03.2013, 11:54   #9
Vikking
Пользователь
 
Регистрация: 21.01.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Про то, что база огромная - нужно сразу говорить.
Тогда бы думаю автор того кода некоторые моменты сделал иначе, например на каждом шаге по массиву не лазил по 2 раза на лист, чтоб сверить данные.

А если она и впрямь огромная - тогда думаю нужен макрос, а не UDF, или массивная UDF.
Да, вы безусловно правы. Ступил. А если я сейчас здесь выложу фрагмент реальной базы, Вы поможете подогнать ПФ под неё? Просто на том форуме автор уже не в сети.
Vikking вне форума Ответить с цитированием
Старый 15.03.2013, 12:30   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Фрагмент реальной базы не обязателен - хватит небольшого примера с реальным расположением данных, и более подробной информации о процессе.
Например, если результат нужно получить в 3 ячейки, но из базы в 100000 строк - то достаточно чуть подправить код, чтоб работало побыстрее, хотя и так сойдёт.
Хотя думаю тут ещё нужно подумать, какой ожидаете результат - он может в ячейке и не поместиться, к тому же чтоб так собрать строку в 30000 значений нужно примерно 4 секунды...
Может быть и это стОит изменить, если время важно.
Если же результат нужно получать например в 30000 смежных ячеек (10000 строк с 10000 критериев Условие1, 3 столбца с Условие2), то лучше 1 массивная UDF, которая пробежит по массиву 1 раз, а не 30000 простых UDF, которые это сделают 30000 раз (и может всё вообще зависнет...).
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение содержимого ячеек столбца в одно значение)) Rust_12 Microsoft Office Excel 5 21.03.2012 00:27
Среднее значение по нескольким условиям Ppaa Microsoft Office Excel 6 30.04.2011 01:46
Счетесли по нескольким условиям Neo007 Microsoft Office Excel 4 23.09.2008 16:23
СУММЕСЛИ по нескольким условиям 2 Levchik Microsoft Office Excel 8 27.05.2008 09:15
СУММЕСЛИ по нескольким условиям Gadar Microsoft Office Excel 6 26.05.2008 10:07