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

Вход

Регистрация

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

 

= Мир MS Excel/Генерация всех возможных комбинаций слов из 2-3 колонок - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Генерация всех возможных комбинаций слов из 2-3 колонок (Формулы)
Генерация всех возможных комбинаций слов из 2-3 колонок
zamboga Дата: Вторник, 18.06.2013, 15:17 | Сообщение № 1
Группа: Гости
Исходные данные:
3 колонки "Фамилия", "имя", "отчество".

Фамилия Имя Отчество
Иванов Сергей Никанорович
Смирнов Петр Петрович
Сидоренко Михаил Евгеньевич
… … …
… … …
… … …

Список содержит N записей.

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

Фио
Иванов Сергей Никанорович
Иванов Сергей Петрович
Иванов Сергей Евгеньевич
Иванов Петр Никанорович
Иванов Петр Петрович
Иванов Петр Евгеньевич
Иванов Михаил Никанорович
Иванов Михаил Петрович
Иванов Михаил Евгеньевич
Смирнов Сергей Никанорович
Смирнов Сергей Петрович
Смирнов Сергей Евгеньевич
Смирнов Петр Никанорович
Смирнов Петр Петрович
Смирнов Петр Евгеньевич
Сидоренко Михаил Никанорович
Сидоренко Михаил Петрович
Сидоренко Михаил Евгеньевич




Подскажите плз, как такое реализовать, желательно с помощью формул.
 
Ответить
СообщениеИсходные данные:
3 колонки "Фамилия", "имя", "отчество".

Фамилия Имя Отчество
Иванов Сергей Никанорович
Смирнов Петр Петрович
Сидоренко Михаил Евгеньевич
… … …
… … …
… … …

Список содержит N записей.

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

Фио
Иванов Сергей Никанорович
Иванов Сергей Петрович
Иванов Сергей Евгеньевич
Иванов Петр Никанорович
Иванов Петр Петрович
Иванов Петр Евгеньевич
Иванов Михаил Никанорович
Иванов Михаил Петрович
Иванов Михаил Евгеньевич
Смирнов Сергей Никанорович
Смирнов Сергей Петрович
Смирнов Сергей Евгеньевич
Смирнов Петр Никанорович
Смирнов Петр Петрович
Смирнов Петр Евгеньевич
Сидоренко Михаил Никанорович
Сидоренко Михаил Петрович
Сидоренко Михаил Евгеньевич




Подскажите плз, как такое реализовать, желательно с помощью формул.

Автор - zamboga
Дата добавления - 18.06.2013 в 15:17
Pelena Дата: Вторник, 18.06.2013, 17:12 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19157
Репутация: 4411 ±
Замечаний: ±

Excel 365 & Mac Excel
Тема обсуждается на Планете
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=49066


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТема обсуждается на Планете
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=49066

Автор - Pelena
Дата добавления - 18.06.2013 в 17:12
MCH Дата: Вторник, 18.06.2013, 20:38 | Сообщение № 3
Группа: Админы
Ранг: Старожил
Сообщений: 2002
Репутация: 751 ±
Замечаний: ±

вариант макроса
К сообщению приложен файл: 0311402.xls (37.0 Kb)
 
Ответить
Сообщениевариант макроса

Автор - MCH
Дата добавления - 18.06.2013 в 20:38
zamboga Дата: Вторник, 18.06.2013, 22:12 | Сообщение № 4
Группа: Гости
макрос совсем крохотный получился, спасибо огромное!
 
Ответить
Сообщениемакрос совсем крохотный получился, спасибо огромное!

Автор - zamboga
Дата добавления - 18.06.2013 в 22:12
zamboga Дата: Среда, 19.06.2013, 11:25 | Сообщение № 5
Группа: Гости
MCH, считает не совсем корректно, вернее, считает то нормально, но только для __идеальных__ входных данных, как в первоначальном примере.
К сожалению, я не учел некоторые детали в первоначальном ТЗ.

Попробовал поковырять скрипт -- либо ошибки, либо неверная выдача. Своих знаний никак пока не хватает.

Ошибки отработки скрипта:
1. входные данные должны быть разделены по отдельным колонкам, как в моем примере, (а не как вы предложили, в одной)-- т.к. в качестве входных данных также выступают и фразы. Поэтому, если я объединяю свои входные данные в одну колонку -- то сейчас скрипт не корректно отработает, т.к. сейчас в вашем варианте решения разделителем выступает пробел.

2. Если на входе число колонок (слов) отличается от трех в любую сторону, то тоже скрипт не работает (причина, думаю, та же -- в скрипте разделитель -- пробел)

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

Уточненное ТЗ
Входные данные
1. На входе может быть 2-10 колонок (или n колонок для общего случая)
2. В каждой колонке содержится текстовая фраза
3. Каждая фраза состоит из 0-10 слов (или m слов для общего случая), во фразе могут быть цифры 0-9 и числа, знаки препинания .,!?, скобки (), кавычки "", дефисы -, слеш прямой и обратный /\, двоеточие :, точка с запятой ;, и т.д. Словом, любые знаки препинания и пунктуации (любые символы с клавиатуры)
4. Колонка может содержать пустые ячейки
5. Число строк с фразами в каждой колонке различно

Выходные данные
1. Одна колонка -- фразы, вторая колонка -- длина строки.
2. Каждая фраза комбинируется с каждой другой фразой, каждая фраза должна побывать на 1, 2, 3, ..., n месте.
3. На орфографическое и грамматическое несоответствие слов между собой не обращаем внимания. На итоговый порядок знаков препинания -- тоже.
4. Итоговый список отсортирован по убыванию длины строки.

Если решение можно формулой -- лучше формулой, что бы я смог разобраться. Или скрипт=)

На Планете прикрепил новый пример.
Сори, что пишу и сюда и туда.
 
Ответить
СообщениеMCH, считает не совсем корректно, вернее, считает то нормально, но только для __идеальных__ входных данных, как в первоначальном примере.
К сожалению, я не учел некоторые детали в первоначальном ТЗ.

Попробовал поковырять скрипт -- либо ошибки, либо неверная выдача. Своих знаний никак пока не хватает.

Ошибки отработки скрипта:
1. входные данные должны быть разделены по отдельным колонкам, как в моем примере, (а не как вы предложили, в одной)-- т.к. в качестве входных данных также выступают и фразы. Поэтому, если я объединяю свои входные данные в одну колонку -- то сейчас скрипт не корректно отработает, т.к. сейчас в вашем варианте решения разделителем выступает пробел.

2. Если на входе число колонок (слов) отличается от трех в любую сторону, то тоже скрипт не работает (причина, думаю, та же -- в скрипте разделитель -- пробел)

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

Уточненное ТЗ
Входные данные
1. На входе может быть 2-10 колонок (или n колонок для общего случая)
2. В каждой колонке содержится текстовая фраза
3. Каждая фраза состоит из 0-10 слов (или m слов для общего случая), во фразе могут быть цифры 0-9 и числа, знаки препинания .,!?, скобки (), кавычки "", дефисы -, слеш прямой и обратный /\, двоеточие :, точка с запятой ;, и т.д. Словом, любые знаки препинания и пунктуации (любые символы с клавиатуры)
4. Колонка может содержать пустые ячейки
5. Число строк с фразами в каждой колонке различно

Выходные данные
1. Одна колонка -- фразы, вторая колонка -- длина строки.
2. Каждая фраза комбинируется с каждой другой фразой, каждая фраза должна побывать на 1, 2, 3, ..., n месте.
3. На орфографическое и грамматическое несоответствие слов между собой не обращаем внимания. На итоговый порядок знаков препинания -- тоже.
4. Итоговый список отсортирован по убыванию длины строки.

Если решение можно формулой -- лучше формулой, что бы я смог разобраться. Или скрипт=)

На Планете прикрепил новый пример.
Сори, что пишу и сюда и туда.

Автор - zamboga
Дата добавления - 19.06.2013 в 11:25
zamboga Дата: Среда, 19.06.2013, 11:32 | Сообщение № 6
Группа: Гости
зы. Итоговый список отсортирован по __ВОЗРАСТАНИЮ__ длины строки.
 
Ответить
Сообщениезы. Итоговый список отсортирован по __ВОЗРАСТАНИЮ__ длины строки.

Автор - zamboga
Дата добавления - 19.06.2013 в 11:32
Pelena Дата: Среда, 19.06.2013, 11:35 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19157
Репутация: 4411 ±
Замечаний: ±

Excel 365 & Mac Excel
Цитата (zamboga)
На Планете прикрепил новый пример

zamboga, если Вы хотите получать ответы здесь, то и файлы прикрепляйте здесь. Для этого надо всего лишь прочитать Правила и зарегистрироваться


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Цитата (zamboga)
На Планете прикрепил новый пример

zamboga, если Вы хотите получать ответы здесь, то и файлы прикрепляйте здесь. Для этого надо всего лишь прочитать Правила и зарегистрироваться

Автор - Pelena
Дата добавления - 19.06.2013 в 11:35
MCH Дата: Среда, 19.06.2013, 12:29 | Сообщение № 8
Группа: Админы
Ранг: Старожил
Сообщений: 2002
Репутация: 751 ±
Замечаний: ±

Цитата zamboga
Ошибки отработки скрипта:

А что Вы предполагали, пример не приложили, задачу внятно не описали

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

А что Вы предполагали, пример не приложили, задачу внятно не описали

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

Автор - MCH
Дата добавления - 19.06.2013 в 12:29
zamboga Дата: Среда, 19.06.2013, 13:51 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Цитата (MCH)
судя по описанию даже при небольшом количестве исходных данных поличится огромное кол-во различных комбинаций

Да, если колонок и строк будет много --- то будет много комбинаций. Но входные данные -- либо колонок ~10, а строк 2-3, либо наоборот -- 2-3 колонки и ~20 строк. Т.е. отношение числа колонок к строкам будет отличаться на порядок, и итоговый результат комбинаций врядли превысит несколько тысяч строк, что вполне по силам переварить в дальнейшем, используя различные фильтры.

Цитата (MCH)
А что Вы предполагали, пример не приложили, задачу внятно не описали Давайте пример,


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

Да, если колонок и строк будет много --- то будет много комбинаций. Но входные данные -- либо колонок ~10, а строк 2-3, либо наоборот -- 2-3 колонки и ~20 строк. Т.е. отношение числа колонок к строкам будет отличаться на порядок, и итоговый результат комбинаций врядли превысит несколько тысяч строк, что вполне по силам переварить в дальнейшем, используя различные фильтры.

Цитата (MCH)
А что Вы предполагали, пример не приложили, задачу внятно не описали Давайте пример,


Виноват, исправляюсь.

Автор - zamboga
Дата добавления - 19.06.2013 в 13:51
zamboga Дата: Среда, 19.06.2013, 14:20 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
почему то файл не залился.
К сообщению приложен файл: 5457007.xls (30.5 Kb)
 
Ответить
Сообщениепочему то файл не залился.

Автор - zamboga
Дата добавления - 19.06.2013 в 14:20
MCH Дата: Среда, 19.06.2013, 14:57 | Сообщение № 11
Группа: Админы
Ранг: Старожил
Сообщений: 2002
Репутация: 751 ±
Замечаний: ±

Я правильно понимаю задачу?
Необходимо составить все комбинации из шести фраз, при этом в качестве первой фразы может быть любая из 4, на втором - любая из 3, на 3-м - любая из 8 и т.д.
При этом порядок чередования фраз между собой может быть любым.

Если да, то на утверждение:
Цитата (zamboga)
итоговый результат комбинаций врядли превысит несколько тысяч строк

можно возразить:
4*3*8*5*4*3 * 6! = 5760 * 720 = 4 147 200 вариантов

А если какой-то фразы может не быть в тексте, то количество вариантов будет еще больше

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


Сообщение отредактировал MCH - Среда, 19.06.2013, 14:58
 
Ответить
СообщениеЯ правильно понимаю задачу?
Необходимо составить все комбинации из шести фраз, при этом в качестве первой фразы может быть любая из 4, на втором - любая из 3, на 3-м - любая из 8 и т.д.
При этом порядок чередования фраз между собой может быть любым.

Если да, то на утверждение:
Цитата (zamboga)
итоговый результат комбинаций врядли превысит несколько тысяч строк

можно возразить:
4*3*8*5*4*3 * 6! = 5760 * 720 = 4 147 200 вариантов

А если какой-то фразы может не быть в тексте, то количество вариантов будет еще больше

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

Автор - MCH
Дата добавления - 19.06.2013 в 14:57
zamboga Дата: Среда, 19.06.2013, 15:44 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Да, задачу вы поняли верно, только помимо этого надо еще выводить варианты комбинаций "любая фраза из только первой колонки с любой из только второй колонки" , "любая первая + любая вторая + любая третья" и т.д. Т.е. не только полный набор (из любых комбинаций 1-6 фраз), но и любые "мелкие" промежуточные варианты (1+2, 1+3, 1+n; 2+1, 2+3, 2+n; 1+2+3, 1+3+2, и т.д.)

Цитата (MCH)
можно возразить: 4*3*8*5*4*3 * 6! = 5760 * 720 = 4 147 200 вариантов

согласен. первоначально я в своих расчетах числа вариантов считал комбинации без перестановок =)

У меня все-таки вряд ли будут даже такие матрицы (6*8, как в примере) входных фраз. Скорее всего, не более 3 колонок (или наоборот, 1-3 строки и 5-8 колонок)

Еще в качестве граничных условий выходных вариантов можно предусмотреть длину выходной строки. Она не должна превышать 75 символов (есть и другие ограничения по длине итоговых фраз и по ее составу, но далее я уже могу их обрабатывать самостоятельно -- через формулы и фильтры).
Первоначально с длиной строк я планировал "играться" уже после сборки всех вариантов комбинаций -- отсечь последние слова, что бы фраза влезла в 75 (25, 33, 35, 50) символов мне не сложно.
Поэтому, можно сделать так: в итоговую выдачу собираются только те фразы, длина которых не превышает 75 символов (только они должны обрезаться по последнему слову, а не обрываться на 76 символе), а остальные варианты обрезки по длине я соберу самостоятельно.

Кратко уточняю ТЗ:
0. Само ТЗ в целом вы поняли абсолютно верно.
1. Длина итоговой фразы <=75 символов
2. Комбинации фраз (колонок) нужны любые: даже только 1+2, 1+2+3, 2+3+4, 2+3+4+5 и т.д.
3. И в целом, если вас не затруднит, пусть будут оба варианта:
а) без учета чередования фраз между собой
б) с учетом чередования фраз между собой (1+2 и 2+1, 1+2+3 и 1+3+2 и т.д.).
В зависимости от вида входных данных (все-таки мне не всегда будет нужна перестановка) и их объема я бы использовал тот или иной вариант.


Сообщение отредактировал zamboga - Среда, 19.06.2013, 15:45
 
Ответить
СообщениеДа, задачу вы поняли верно, только помимо этого надо еще выводить варианты комбинаций "любая фраза из только первой колонки с любой из только второй колонки" , "любая первая + любая вторая + любая третья" и т.д. Т.е. не только полный набор (из любых комбинаций 1-6 фраз), но и любые "мелкие" промежуточные варианты (1+2, 1+3, 1+n; 2+1, 2+3, 2+n; 1+2+3, 1+3+2, и т.д.)

Цитата (MCH)
можно возразить: 4*3*8*5*4*3 * 6! = 5760 * 720 = 4 147 200 вариантов

согласен. первоначально я в своих расчетах числа вариантов считал комбинации без перестановок =)

У меня все-таки вряд ли будут даже такие матрицы (6*8, как в примере) входных фраз. Скорее всего, не более 3 колонок (или наоборот, 1-3 строки и 5-8 колонок)

Еще в качестве граничных условий выходных вариантов можно предусмотреть длину выходной строки. Она не должна превышать 75 символов (есть и другие ограничения по длине итоговых фраз и по ее составу, но далее я уже могу их обрабатывать самостоятельно -- через формулы и фильтры).
Первоначально с длиной строк я планировал "играться" уже после сборки всех вариантов комбинаций -- отсечь последние слова, что бы фраза влезла в 75 (25, 33, 35, 50) символов мне не сложно.
Поэтому, можно сделать так: в итоговую выдачу собираются только те фразы, длина которых не превышает 75 символов (только они должны обрезаться по последнему слову, а не обрываться на 76 символе), а остальные варианты обрезки по длине я соберу самостоятельно.

Кратко уточняю ТЗ:
0. Само ТЗ в целом вы поняли абсолютно верно.
1. Длина итоговой фразы <=75 символов
2. Комбинации фраз (колонок) нужны любые: даже только 1+2, 1+2+3, 2+3+4, 2+3+4+5 и т.д.
3. И в целом, если вас не затруднит, пусть будут оба варианта:
а) без учета чередования фраз между собой
б) с учетом чередования фраз между собой (1+2 и 2+1, 1+2+3 и 1+3+2 и т.д.).
В зависимости от вида входных данных (все-таки мне не всегда будет нужна перестановка) и их объема я бы использовал тот или иной вариант.

Автор - zamboga
Дата добавления - 19.06.2013 в 15:44
zamboga Дата: Среда, 19.06.2013, 15:47 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
ну и конечно, я буду рад любому способу решения (формулы/макросы) -- как вам проще.
 
Ответить
Сообщениену и конечно, я буду рад любому способу решения (формулы/макросы) -- как вам проще.

Автор - zamboga
Дата добавления - 19.06.2013 в 15:47
MCH Дата: Среда, 19.06.2013, 17:53 | Сообщение № 14
Группа: Админы
Ранг: Старожил
Сообщений: 2002
Репутация: 751 ±
Замечаний: ±

Формульное решение без перестановок, скопируйте формулы на нужное кол-во строк

Макросом с перестановками лень писать
К сообщению приложен файл: 7546890.xls (93.0 Kb)
 
Ответить
СообщениеФормульное решение без перестановок, скопируйте формулы на нужное кол-во строк

Макросом с перестановками лень писать

Автор - MCH
Дата добавления - 19.06.2013 в 17:53
zamboga Дата: Пятница, 21.06.2013, 09:46 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
MCH,

спасибо ОГРОМНОЕ!

разобрался в формулах, принцип работы мне ясен.

Работает идеально, дальше функционал допилю сам.

еще раз спасибо!!
 
Ответить
СообщениеMCH,

спасибо ОГРОМНОЕ!

разобрался в формулах, принцип работы мне ясен.

Работает идеально, дальше функционал допилю сам.

еще раз спасибо!!

Автор - zamboga
Дата добавления - 21.06.2013 в 09:46
dimabig Дата: Четверг, 13.07.2017, 17:56 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день, уважаемые специалисты. Нужна ваша помощь
нужно сделать вот такой скрипт

сколько мне будет стоить это?
Деньги могу перевести через PayPal или WebMoney


Сообщение отредактировал dimabig - Четверг, 13.07.2017, 17:58
 
Ответить
СообщениеДобрый день, уважаемые специалисты. Нужна ваша помощь
нужно сделать вот такой скрипт

сколько мне будет стоить это?
Деньги могу перевести через PayPal или WebMoney

Автор - dimabig
Дата добавления - 13.07.2017 в 17:56
_Boroda_ Дата: Четверг, 13.07.2017, 17:58 | Сообщение № 17
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
С платным заказом идите в соответствующую ветку форума.


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

Автор - _Boroda_
Дата добавления - 13.07.2017 в 17:58
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Генерация всех возможных комбинаций слов из 2-3 колонок (Формулы)
  • Страница 1 из 1
  • 1
Поиск:

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